【发布时间】:2014-09-26 14:36:05
【问题描述】:
当我在 iOS 7 上运行我的应用程序时,一切正常。当我在 iOS 8 上运行我的应用程序时, 并没有按预期工作。这一切都无需对代码库进行一次编辑。
具体来说,我试图在堆栈上“推送”一个新的视图控制器,在 iOS 8 中没有任何反应。
起初我认为它可能与情节提要相关,因此从通过performSegueWithIdentifier 触发我的推送转场切换到使用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。在尝试调试时,我从 segue 移开使用 instantiateViewControllerWithIdentifier 和 [self.navigationController pushViewController:myVC animated:YES];。两种方法都可以在 iOS 7 上按预期工作。但是,无论我做什么,我都无法在 iOS 8 上运行,就像导航控制器是 nil 或其他东西一样,什么都没有发生!
有什么想法吗?
【问题讨论】:
-
你试过NSLog应该出现的VC的
viewDidLoad吗?被解雇了吗? -
@ObiWanKeNerd 刚刚在
viewDidLoad中添加了一个中断。在 iOS 8 上运行时,viewDidLoad没有被调用。 -
您是否尝试过使用第一种方法
performseguewithidentifier,但使用modal segue而不是push segue?只是想看看它是否是与应该提出的navigation controller或viewController相关的问题。你有prepare for segue的方法吗?您是否尝试在其中插入中断? -
好问题,谢谢。
performSegueWithIdentifier似乎工作正常。当我向prepareForSegue添加中断时,会触发中断。为了进行测试,我不再使用 segue,而是使用instantiateViewControllerWithIdentifier和[self.navigationController pushViewController:myVC animated:YES];。现在这里有新信息:当我使用[self.navigationController presentViewController:myVC animated:YES completion:^{}];时,myVC的viewDidLoad方法会被调用,而pushViewController不会。在这两种情况下,屏幕上都没有任何反应! -
我觉得我离解决这个问题越来越近了,因为我看到了这里的独特之处,那就是我的菜单 vc 正在通过自定义转换委托
menuVC.transitioningDelegate = self呈现。该应用程序的视图层次结构如下所示:Nav VC > Base VC > Menu VC > Other VCs。 Base VC 通过自定义模态转换呈现 Menu VC。无法推送/呈现任何其他 VC 的是 Menu VC...
标签: ios objective-c iphone ios8 xcode6