|
|
1
6
有没有人解决了这个问题,因为原来的帖子是正确的-简单地使用UITableViewController并将该控制器的表视图推到navController上不会触发这些方法,尽管它应该触发。我有一系列的UITableViewControllers和表视图,它们被推送和弹出以显示层次结构的数据-没有什么特别的,但是从来没有调用“viewWill/Did/Appear/enside”方法。只调用viewDidLoad和viewDidUnload。 我们的两个设置中肯定都有布线问题,但只需将一个视图推入navigationController就可以了(?)——很难相信这会在这么长时间内作为一个基本错误被忽视。 ? |
|
|
2
9
我在文档中找不到它,但我认为这可能是因为您使用的是UINavigationController。 设置UINavigationController的委托属性,然后实现UINavigationControllerDelegate怎么样?它提供了两种可选方法:
例如,navigationController:willShowViewController:animated:可能如下所示:
不管怎样,这将使您获得所需的行为,而不必对viewWillAppear进行黑客攻击:遍布您的项目。 |
|
|
3
0
View Controller Programming Guide viewWillAppear:和viewDidAppear:方法使子类有机会执行与视图外观相关的任何其他操作。 你怎么知道这些方法没有被调用?你能不能再提供一些代码,或者至少用NSLog()测试一下,看看是否打印了一些消息。 |
|
|
4
0
我也看到了同样的问题。我在IB中有一个简单的UIView,我用一个扩展UITableViewController的类做了一个addSubview。 在我的应用程序中,我可以看到TableViewController的视图,但在这种情况下不会调用viewWillAppear函数。 |
|
|
5
0
但是,如果您只是在视图控制器内部创建UINavController,那么您需要实现“viewWillAppear”、“viewdidaappear”等等,并将它们转发给导航控制器。 请注意,如果使用Three20,这一点尤其重要,因为它的视图控制器层次结构要求接收“viewWillAppear”消息。如果不是这样的话,你最终会得到一个TTTableViews,它不会绘制。 |
|
|
6
0
如果使用UITabViewController,也会发生同样的情况。您需要通过实现UITabViewControllerDelegate或UINavigationControllerDelegate回调来强制viewWillAppear调用 |
|
|
7
0
这种解释可能有助于: http://www.mlsite.net/blog/?p=210 |