塞格斯總是創建一個新的viewController。如果您想要重複回到相同的WebBrowserViewController
,那麼您應該手動實例化該視圖控制器,在您的HistoryViewController
中保留對該視圖控制器的強烈引用,然後推送或呈現該viewController而不是使用segue。
var webBrowserVC: WebBrowserViewController?
@IBAction func browseButtonPressed() {
if webBrowserVC == nil {
webBrowserVC = storyboard?.instantiateViewControllerWithIdentifier("webBrowserViewController") as? WebBrowserViewController
}
// configure webBrowserVC with data that would have previously been set
// in prepareForSegue:
webBrowserVC?.someProperty = someData
// push view controller if you are using a navigation controller:
navigationController?.pushViewController(webBrowserVC!, animated: true)
// or to present modally:
presentViewController(webBrowserVC!, animated: true, completion: nil)
}
爲了這個工作,你必須將故事板標識符設置爲"webBrowserViewController"
在身份檢查。
有沒有明確存儲狀態更簡單的方法?我寧願只展示相同的視圖控制器或東西 – Edmund
好吧,你可以使用標籤欄控制器而不是顯示segue ...標籤欄控制器保持多個視圖控制器作爲兄弟。或者你甚至可以建立自己的視圖控制器體系結構。但是如果你打算使用Show segue,你不應該出現「相同的視圖控制器」。讓視圖控制器在你離開它時死掉,並且當你再次顯示時實例化一個新視圖控制器,這是視圖控制器體系結構這個方面的整個_point_。 – matt
存儲狀態*是更簡單的方法。 –