NSArray *allControllers = self.navigationController.viewControllers;
UITableViewController *parent = [allControllers lastObject];
[parent myFunction]; // not work


myFunction是父级的函数,但是此代码不起作用,哪里有错

最佳答案

[self.navigationController.viewControllers lastObject]将返回您压入堆栈的最后一个控制器,这是您从中执行此代码的控制器。要获得以前的控制器,可以使用[allControllers objectAtIndex:allControllers.count - 2],但这是一个非常糟糕的主意:

1)没有人可以保证您的控制器总有一天不会成为根控制器。然后,上面的代码将使您的应用程序崩溃,因为之前没有控制器。

2)没有人能够保证有人不会在您之前推“错”控制器。

因此,我的建议是-在“子”控制器中创建类似@property (retain) ParentController *parentController;的属性,并将其显式设置为指向“父”控制器。

关于iphone - 在UINavigationController中如何调用父函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5246666/

10-08 20:50