我有一个父视图控制器,以模态呈现另一个视图控制器。当在呈现的视图控制器上按下按钮时,我需要让呈现该视图控制器的父级关闭呈现的视图控制器,然后打开另一个视图控制器。这是按下按钮后的代码:
//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'
最佳答案
错误消息非常明确-您认为是FeedViewController的控制器实际上是UINavigationController。那是因为当您从嵌入在导航控制器中的控制器呈现控制器时,实际上是由导航控制器执行呈现,因此self.presentingViewController将成为导航控制器。在不知道应用程序结构的情况下很难说出来,但是您需要获得对FeedViewController的正确引用。可能是导航控制器的topViewController。