iOS 不向 NavigationController 推送新视图

Posted

技术标签:

【中文标题】iOS 不向 NavigationController 推送新视图【英文标题】:iOS Not Pushing new view to NavigationController 【发布时间】:2012-11-13 21:45:33 【问题描述】:

我正在开发一个具有 TabView 控制器的应用程序,并且每个选项卡中都有一个 TabeView,我将 TableView 委托和数据源设置为对象的主 ViewController。我使用以下代码尝试将新的 ViewController 推送到 NavigationController:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    DonationsDataViewController *data = [self.storyboard instantiateViewControllerWithIdentifier:@"donationData"];
    //TODO set data to be passed;
    [self.navigationController pushViewController:data animated:YES];
    NSLog(@"Show donation details.");

我遇到的问题是应用程序没有崩溃,我得到了我的日志:显示捐赠详细信息。但它从来没有推送 ViewController,我在这里做错了吗?如果是这样,解决问题的适当途径是什么?

编辑

有关项目结构的更多信息,请参阅THIS。我是 ios 新手,这只是一个可以玩和学习的项目。压缩后的项目可以在HERE下载。

【问题讨论】:

您能描述一下您的视图控制器的结构吗? NSLog(@"Show donation details.");处设置断点。通过在控制台输入po self.navigationControllerpo data 获取有关self.navigationControllerdata 的详细信息。看看它是否返回一个有效的对象。 您能否发布您如何设置 UITabBarController 的代码? 查看我的编辑以获取更多详细信息和项目文件,我不确定您的要求,我是 iOS 新手... 【参考方案1】:

您是否验证了 navigationController 实例不为 nil?在 Objective-C 中向 nil 的实例发送消息是有效的,这与在 C#/Java 中不同的是,在为 null 的实例上调用方法会引发异常。

【讨论】:

我添加了一个检查: if(self.navigationController != nil) //My code 现在什么都没有记录,为什么这是 nil?我该如何解决?我有点 iOS Dev Noob :/ 这是一个使用 Interface Builder 的示例:codenugget.org/how-to-embed-a-navigation-controller-inside-a 这没有做我需要的:/我编辑了我的问题以包含代码和更多细节。 问题是您将视图控制器直接设置为选项卡控制器的子控制器。您应该将导航控制器作为选项卡控制器的子控制器,然后将视图控制器设置为导航控制器的根视图控制器。如果这有任何意义:) 它在包含“我可以导航”的图片后面的链接中进行了解释。 所以正如你所说,一切都嵌入到 TabController 中,并且没有导航控制器。我将所有内容都嵌入到 NavigationController 中,效果很好。谢谢。

以上是关于iOS 不向 NavigationController 推送新视图的主要内容,如果未能解决你的问题,请参考以下文章

不向当前 iOS App 用户提供更新

向 pdf 添加签名图像而不向 iOS 中的用户显示 pdf 数据

iOS开发之--单个页面禁止右滑返回操作

Django Channels 不向 Android App 发送消息

不向 rethinkdb 插入数据

为啥 switch 语句不向应用返回信息? [关闭]