2014-09-26 63 views
3

当我运行我的应用程序在iOS 7事情按预期工作。当我在上运行我的应用程序时,iOS 8的东西不是按预期工作。这完全没有对代码库进行单一编辑。iOS 8 pushViewController无法正常工作,在iOS 7中,一切按预期工作,零代码更改?

具体来说,我试图“推”一个新的视图控制器在堆栈和在iOS 8没有任何反应。 < - 这是错误,没有任何反应。没有崩溃,只是没有。

起初,我想这可能是故事情节相关,并经由performSegueWithIdentifier触发我推SEGUE所以切换到手动刚刚从故事板使用instantiateViewControllerWithIdentifier加载它,然后通过[self.navigationController pushViewController:myVC animated:YES];呈现它。

上述任何一种技术都适用于iOS 7. 但是,在iOS 8设备上运行我的应用程序时,这两种方法都失败了。。此外,我注意到调试器/ NSLog中的奇怪行为。在iOS系统7,当我运行NSLog(@"self.navigationController = %@", self.navigationController)我得到(预期):

self.navigationController = <UINavigationController: 0x145986b0>

在iOS系统中8,我也得到(预期):

self.navigationController = <UINavigationController: 0x15d646db0>

同时,在同一点在代码中,当我插入一个中断,然后通过控制台查看事件时,可以这样做:(lldb) po self.navigationController在iOS 7中,我得到(如预期):

(lldb) po self.navigationController <UINavigationController: 0x175810b0>

然而,在iOS 8的,我得到:

(lldb) po self.navigationController error: property 'navigationController' not found on object of type 'PHMenuTableViewController *' error: 1 errors parsing expression

在上面的两个例子po我与我的 “调试” 建立配置建设。

最终,我只是试图推视图控制器。我原来的代码是使用segue。在尝试调试时,我从赛格移开使用instantiateViewControllerWithIdentifier[self.navigationController pushViewController:myVC animated:YES];。按预期,这两种方法都可以在iOS 7上运行然而,无论我做什么,我都无法在iOS 8上工作,没有任何反应,就好像导航控制器是nil或者什么也不是!

任何想法?

+0

你有没有试过NSLog应该出现的VC的'viewDidLoad'?它被解雇了吗? – r4id4 2014-09-26 14:49:43

+0

@ObiWanKeNerd刚刚在'viewDidLoad'中添加了一个中断。在iOS 8上运行'viewDidLoad'时*不会*被调用。 – 2014-09-26 14:53:16

+0

您是否尝试过使用第一个方法'performseguewithidentifier',但是使用'modal segue'而不是'push segue'?只是为了看看是否存在与应该呈现的“导航控制器”或“viewController”相关的问题。你有没有办法“准备继续”?你有尝试在那里插入休息吗? – r4id4 2014-09-26 15:23:46

回答

2

我的情况和你的情况很相似。

我有一个名为InventoryMatrixEditViewController的VC,它是通过自定义模态表示呈现的。在这个VC中有一个方法叫做 - (void)viewDidLoad;设置布局:

- (void)_setupLayout 
{ 
    if (_isToCreateNewMatrix) { 
     //[self.view addSubview:self.attributesTableViewController.view]; 
     [self.attributesTableViewController addNewAttributeItem]; 
     [self.navigationController pushViewController:self.attributesTableViewController 
              animated:Yes]; 
     return; 
    } 
.... 

当动画标志是肯定的,有时推视图的viewDidLoad中(self.attributesTableViewController)将不会被(错误将被触发奇怪不是每次)调用,但应用程序不会崩溃,只是呈现一个空白的modalView,甚至没有设置navigationBar。

但是,如果动画标志是NO,一切都可以。

我不知道它是一个错误还是苹果只是推动人们不要激活动画,如果视图首次以模态方式呈现。

+1

这不是一个答案 – MrTJ 2014-12-23 13:19:30

+0

这不是一个答案,但设置动画标志为NO绝对有效对于iOS 8(现有代码适用于iOS 7)。 – richsage 2015-03-27 09:43:13