【发布时间】:2016-03-31 03:46:06
【问题描述】:
我有一个主要的UIViewController 并命名为AddInformationController。在这个mainViewController 我有两个UIContainerView。他们每个人都嵌入了UITableViewController。表视图控制器被命名为InformationSegmentController 和ResultSegmentController。
我把这个放在AddInformationController:
InformationSegmentController *isc = [self.storyboard instantiateViewControllerWithIdentfier:@"InformationSegmentController"];
ResultSegmentController *rsc = [self.storyboard instantiateViewControllerWithIdentifier: @"ResultSegmentController"];
[self addChildViewController: isc];
[self addChildViewController: rsc];
在InformationSegmentController 类或ResultSegmentController 类中,我尝试记录以下内容:
NSLog(@"%@",self.parentViewController);
但不幸的是,它是零。如何正确获取 parentViewController?我必须使用prepareForSegue 吗?
// 问题更新:
我发现如果我直接在我的故事板中创建那些 childViewControllers,我不必再次调用 addChildViewController 方法。
我在AddInformationController 中尝试了NSLog(@"%@", self.childViewControllers),结果包含InformationSegmentController 类和ResultSegmentController 类。
但问题是当我在 viewDidLoad 的两个 childViewContorllers 上调用 NSLog(@"%@", self.parentViewController) 时,结果为零。
【问题讨论】:
-
显然,这完全取决于您何时进行日志记录,以及谁是
self。也许这里的self与您小时候添加的实例不同。 -
我已经把
NSLog(@"%@", self.parentViewController)放到InformationSegmentController类的viewDidLoad方法中 -
现在我明白了。 childViewController 的 viewDidLoad 调用早于 parentViewController。所以我可能在 parentViewController 之前 NSLog 它甚至添加 childViewController。
标签: ios objective-c childviewcontroller parentviewcontroller