我有一个父视图控制器,它以模态方式呈现另一个视图控制器。当在呈现的视图控制器上按下按钮时,我需要让呈现视图控制器的父节点关闭呈现的视图控制器,然后打开另一个视图控制器。按下按钮后,这是我的代码:
//Set up a reference to the parent controller
FeedViewController* newsFeed = (FeedViewController*)self.presentingViewController;
//Tell it to dismiss the presented view controller
[newsFeed dismissViewControllerAnimated:YES completion:nil];
//Tell it to open up the other view controller
[newsFeed openNewsCreator];
这里的问题是最后一行。 XCode表示openNewsCreator
无法识别选择器newsFeed
。我尝试手动设置为呈现的视图控制器提供FeedViewController
的引用,它工作正常,所以我的.h文件中没有任何遗漏。
我甚至尝试撤销解雇并提出如下行:
FeedViewController* newsFeed = (FeedViewController*)self.presentingViewController;
[newsFeed openNewsCreator];
[newsFeed dismissViewControllerAnimated:YES completion:nil];
这也不起作用。有什么建议?另外,这是错误:
reason: '-[UINavigationController openNewsCreator]: unrecognized selector sent to instance 0x9a61760'
答案 0 :(得分:1)
错误信息非常明确 - 您认为是FeedViewController的控制器实际上是一个UINavigationController。那是因为当您从嵌入在导航控制器中的控制器呈现控制器时,它实际上是执行呈现的导航控制器,因此self.presentingViewController将是导航控制器。在不知道您的应用程序结构的情况下很难分辨,但您需要获得对FeedViewController的正确引用。它可能是导航控制器的topViewController。