首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >parentViewController在IOS上返回null

parentViewController在IOS上返回null
EN

Stack Overflow用户
提问于 2015-05-28 13:01:12
回答 2查看 3.8K关注 0票数 2

我正在使用以下代码提供一个视图控制器:

代码语言:javascript
运行
复制
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    SubmitAYoNViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"SubmitAYoN"];
    [ivc setModalPresentationStyle:UIModalPresentationFullScreen];
    [self presentViewController:ivc animated:YES completion:nil];

然后在我的SubmitAYoNViewController中我有这样一个:

代码语言:javascript
运行
复制
  NSLog(@"%@",self.parentViewController);
    if([self.parentViewController isKindOfClass:[YesOrNoViewController class]]) {
        NSLog(@"do something");
}

self.parentVeiwController为空。为什么会这样呢?

编辑:我想从父视图控制器访问一个方法,然后是打开SubmitAYoN的方法。

解决方案:我使用了委托。如下所示,presentViewController不创建父子关系.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-28 13:35:17

如果您想要呈现视图控制器,那么使用self.presentingViewControllerself.parentViewController返回控制器父级,当它不是另一个控制器的子控制器时,它将为零。

因此,请使用:

代码语言:javascript
运行
复制
NSLog(@"%@",self.presentingViewController);
if([self.presentingViewController isKindOfClass:[YesOrNoViewController class]]) {
   NSLog(@"do something");
}

来自presentViewController:的文档

此方法将presentedViewController属性设置为指定的视图控制器,根据表示样式调整视图控制器的视图大小,然后将视图添加到视图层次结构中。

因此,没有提到控制器是子级的,因为将视图添加到现有的视图层次结构中。

在iOS5之前你会没事的。属性parentViewController的文档声明:

在iOS 5.0之前,如果视图没有父视图控制器并正在呈现,则将返回呈现视图控制器。在iOS 5上,这种行为不再发生。相反,使用presentingViewController属性访问呈现视图控制器。

票数 5
EN

Stack Overflow用户

发布于 2015-05-28 13:08:11

self.parentViewController是你从viewcontrollerself.navigationgtionController中呈现出来的东西

因此,当您呈现一个viewcontroller时,您将持有‘`viewcontroller’的一个实例,该实例将具有self.parentViewController。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30507339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档