2012-10-05 77 views
1

諸如Instapaper和Twitterrific之類的應用程序將啓動到不是其導航堆棧的根視圖的視圖。我們知道這是因爲初始視圖已經有一個後退按鈕。 Instapaper啓動一層深度(Instapaper> Read Read)和Twitterific兩層深度(帳戶>帳戶>所有推文)。UINavigationController Stack

什麼是最有效的/推薦的方法使用故事板(也許pushViewController:animated:performSegueWithIdentifier:sender:)和一個人如何做到這一點,同時考慮到新的狀態恢復的API,以減少視圖我之間發生衝突的機會來實現這一行爲想呈現和國家恢復過程要呈現的一個?

回答

0

你不能通過Storyboards發起一個segue,你必須編寫代碼。通過編寫代碼,我的意思是你可能想使用UINavigationController-setViewControllers:animated:方法,因爲segues通常用於製作漂亮的動畫轉換,而不是初始化UI設置。

+0

我想你可能誤解了我的問題。我在問什麼是啓動視圖的最佳方式,它至少比我的導航堆棧中的根視圖更深一層(以與提及的示例應用程序相同的方式),以及如何在不與新的狀態恢復API。 –

+1

我建議你保存並恢復'UINavigationController'的堆棧到第二個VC,並且使其成爲故事板中的初始視圖控制器。這樣你就可以在應用程序啓動後設置導航堆棧。 –

+0

再說一遍,我不確定你在理解我在問什麼。在啓動時,我想要一個導航控制器自動跳轉到第二個控制器,以便設置一個後退按鈕,它將您帶回第一個控制器。我也想以一種不會與新的狀態恢復API產生衝突的方式來實現這一點。 –

1

如果視圖控制器是一個第二個層次中,我會簡單地UINavigationController- (void)pushViewController:animated:(與animated:NO)從其viewDidLoad方法調用。如果它更深,那麼- (void)setViewControllers:而不是推。

+0

謝謝魯道夫;這是我第一次想到的,但那不會與國家恢復相沖突嗎? –

+0

說實話,我還沒有玩過國家修復。也許你可以從'application:didDecodeRestorableStateWithCoder:'檢查導航控制器(比如最頂級的控制器),然後決定怎麼做。 –

+0

順便說一句,抱歉 - 我沒有仔細閱讀你的問題,這就是爲什麼我沒有提到國家恢復的事情。無論如何,很好的問題。 –