2014-09-26 65 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