[英]Swift, segue to split View Controller from Tab Bar Controller
我想通過說我是Swift和IOS開發的新手來對此進行開頭。
我目前正在嘗試從選項卡欄視圖返回到作為拆分視圖控制器的根視圖控制器執行segue。
從下面的圖片中,我想選擇“取消”按鈕,並返回到我的根視圖控制器(已拆分) 視圖控制器
下面是我設置的情節提要劇集
下面是我正在使用的代碼。
@IBAction func cancelButton(_ sender: Any) {
performSegue(withIdentifier: "submit", sender: nil)
}
最初啟動我的應用程序並開始使用它時。 一切正常。 如下所示,當從左側選擇一個項目時,正確的數據將填充在詳細視圖中。
但是,這是當我在側面菜單中選擇“提交郵件”選項並嘗試返回到rootview時,該應用開始崩潰。
如下所示,當我使用segue返回時,在從主視圖中選擇一個項目時,不再在詳細視圖中填充數據。
此外,當打開時,側面推送菜單現在全屏顯示。
為什么會這樣呢? 還要注意一點,我在側面推動菜單中使用了Cocoapod SideMenu。
謝謝!
Segues用於將控制器推入導航層次結構,而不是像您嘗試的那樣向后退。 您應該將導航層次結構視為樹形結構,其中控制器之間幾乎沒有任何循環關系。 您可以從層次結構中添加和刪除控制器,以進行“前進”和“后退”。 在您的方案中實際發生的情況是,將根控制器的新實例推送到導航堆棧上,而該實例尚未以原始根控制器具有的狀態進行初始化。 盡管可以使用一種特殊類型的segue(稱為unwind segues)來“后退”,但我不建議這樣做,因為它們連接起來很復雜,並且編寫的代碼不明確其功能。
相反,您可以將UIViewController.dismiss與委托模式結合使用以實現所需的功能。
要從tabBarController返回,我只需要設置一個展開鍵即可:
在根視圖控制器中聲明展開(在func中不需要代碼)
@IBAction func unwindToRootViewController(_ sender: UIStoryboardSegue) {
// You can print("I returned"), just to test
}
將將觸發返回的按鈕連接到tabBarController的退出按鈕,然后選擇unwindToRootViewController
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.