我有一个父视图控制器,以模态呈现另一个视图控制器。当在呈现的视图控制器上按下按钮时,我需要让呈现该视图控制器的父级关闭呈现的视图控制器,然后打开另一个视图控制器。这是按下按钮后的代码:

//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。

09-10 07:02
查看更多