Wan*_*ang 2 iphone objective-c
NSArray *allControllers = self.navigationController.viewControllers;
UITableViewController *parent = [allControllers lastObject];
[parent myFunction]; // not work
Run Code Online (Sandbox Code Playgroud)
myFunction是父中的一个函数,但是这个代码不起作用,哪里出错了
[self.navigationController.viewControllers lastObject]将返回最后一个控制器推送到堆栈,这是您正在执行此代码的控制器.要获得以前的控制器,你可以使用,[allControllers objectAtIndex:allControllers.count - 2]但这是一个非常糟糕的主意:
1)没有人可以保证你的控制器有一天不会成为根控制器.然后上面的代码将崩溃您的应用程序,因为它之前没有控制器.
2)没有人能保证有人不会在你之前推出"错误"的控制器.
所以我的建议 - @property (retain) ParentController *parentController;在你的'子'控制器中创建属性并将其明确设置为指向'父'控制器.
| 归档时间: |
|
| 查看次数: |
3069 次 |
| 最近记录: |