【发布时间】:2015-08-11 00:10:37
【问题描述】:
我正在使用此代码模态地展示一个视图控制器:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
SubmitAYoNViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"SubmitAYoN"];
[ivc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentViewController:ivc animated:YES completion:nil];
然后在我的 SubmitAYoNViewController 我有这个:
NSLog(@"%@",self.parentViewController);
if([self.parentViewController isKindOfClass:[YesOrNoViewController class]]) {
NSLog(@"do something");
}
self.parentVeiwController 为 NULL。这是为什么呢?
编辑:我想从我的父视图控制器访问一个方法,然后是打开 SubmitAYoN 的方法。
解决方案:我使用了委托。根据下面的答案,presentViewController 不会创建父子关系。
【问题讨论】:
-
您在故事板中检查了您的标识符?是@“SubmitAYoN”吗?
-
@iDev 是的,标识符是正确的,因为新视图正确打开,其他一切似乎都在该 vc 中工作。
-
如果你想要展示视图控制器,那么使用
self.presentingViewController。self.parentViewController返回控制器的父级,当它不是另一个控制器的子级时将为 nil。 -
@RoryMcKinnel 如果我使用 presentViewController 打开它不是孩子吗?
-
@ghostrider。来自
presentViewController的文档:“此方法将presentedViewController 属性设置为指定的视图控制器,根据呈现样式调整该视图控制器的视图大小,然后将视图添加到视图层次结构中。”因此,没有提到将控制器作为子视图作为添加到现有视图层次结构的视图。所以我很确定你需要使用self.presentingViewController。
标签: ios model-view-controller uiviewcontroller