我需要在每次显示时将一些数据加载到视图中。每次显示时间视图时数据都会发生变化,因此我想我可以在方法viewDidAppear中加载数据。不幸的是,我发现每次显示视图时都不会调用viewDidAppear。
从任何其他视图显示视图的代码是....
[self clearView];
[self.view insertSubview:fifthViewController.view atIndex:4];
所以我想我可以将它更改为以下内容来运行viewDidAppear ...
[[self.view insertSubview:fifthViewController.view atIndex: 4 viewDidAppear:YES];
遗憾的是,这会导致“错误的接收器类型'无效'
错误插入子视图和调用viewDidAppear需要做什么?
答案 0 :(得分:0)
如果您通过直接修改ViewController.view
可见性来展示视图,那么您将不会收到viewDidAppear
消息。您需要使用ViewController
方法来显示视图,例如将控制器推入UINavigationController
或使用presentModalViewController
方法。您可以像使用手动调用viewWillAppear:
和viewDidAppear:
一样使用hack,但我不喜欢这个想法。
答案 1 :(得分:0)
感谢您对此问题的帮助。 我已经决定在插入子视图的方法中添加一个viewDidAppear。
以下是目前为我工作的代码。
在最高级别视图控制器的.m文件中,以下代码设置viewDidAppear调用,然后插入第五个子视图。
-(IBAction) loadFifthView:(id)sender
{
[fifthViewController viewDidAppear:YES]; // sets up viewDidAppear
[self clearView];
[self.view insertSubview:fifthViewController.view atIndex:4];
}
在上面的代码片段到位后,位于第五个视图控制器的.m文件中的以下代码片段报告它正在运行。
- (void)viewDidAppear:(BOOL)animated
{
NSLog(@" xxxxxxxxxxxxxxxx inside viewDidAppear ");
}