2013-08-18 70 views
1

我有一個由三個視圖(和相關的ViewControllers)組成的過程。當用戶到達第三個時,他們可以選擇重複第二步。如果發生這種情況,我使用一些值創建步驟2的新viewcontroller,並使用navigationController推送它。不過,我想修改viewControllers數組,以便如果用戶回去,他們不會在第3步,而是在第1步。從navigationcontroller viewControllers數組中刪除額外的viewcontrollers

所以我推我的viewController,然後刪除多餘的#3和#2堆棧像這樣:

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: step2AgainVc.navigationController.viewControllers]; 
[navigationArray removeObjectAtIndex: navigationArray.count - 3]; 
[navigationArray removeObjectAtIndex: navigationArray.count - 2]; 
[step2AgainVc.navigationController setViewControllers:navigationArray animated:NO]; 

然而,這將導致以下控制檯華林:

Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted. 

除此之外,一切正常。 現在,這是我計劃提交給App Store的第一個應用程序(僅在以前使用過Enterprise分佈的應用程序),所以我想重構該方法以不接受警告。有什麼建議麼?

回答

0

您需要在開始推動新控制器之前或完成動畫之後修改陣列。警告報告的問題是,您在導航控制器狀態位於動畫中間時已更改導航控制器狀態所以它不能保證一切都會正常工作。

+0

我將該方法移至目標(步驟#2)控制器的viewWillAppear,並添加了一個屬性以確保僅調用該方法一次。奇蹟般有效。謝謝。 – zaitsman

相關問題