簡體   English   中英

如何在 Swift 4 中檢查上一個視圖控制器

[英]How can I check Previous View Controller in Swift 4

我想重用 ViewController 即UserDataViewController ,用於注冊和配置文件更新。 要做到這一點,我必須知道原點視圖控制器。 (是 RegisterViewController 還是 ProfileViewController?)我該如何檢查? 我需要建議和一些示例代碼,請。

如果您使用 Show segue,那么您正在推入導航堆棧。 userdataViewConroller,在它的viewDidAppear ,可以通過這樣說來找出現在哪個視圖控制器位於堆棧的更下方:

if let vcs = self.navigationController?.viewControllers {
    let previousVC = vcs[vcs.count - 2]
    if previousVC is RegisterViewController { 
        // ... and so on
    }
} 

從何處打開此視圖,RegisterViewController 或 ProfileViewController?

基於此評論,如果您使用導航控制器,則可以通過檢查導航堆棧來執行此操作。 如果您正在使用演示控制器,您可以檢查演示視圖控制器。

但是,如果您可以引用對象,那么您可以添加對早期控制器的弱引用。 這可以通過依賴注入方法來完成,比如准備轉場,或者你也可以在你創建對象的地方做。 希望這可以幫助

我認為不要在UserDataViewController中找到以前的視圖控制器,如果想將其用於配置文件更新,您應該從ProfileViewController傳遞用戶數據。 為此,您可以在ProfileViewController 中添加此功能

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let userDataVC = segue.destinationViewController as? UserDataViewController {
        userDataVC.user = self.user
    }
}

並在UserDataViewController 中為用戶添加一個變量。

var user: User?

並檢查viewDidLoad方法。

if let user = user {
      // Its Coming from ProfileViewController
      // Show User Information in textfields.
}
else {
     // Its Coming From RegisterViewController
}

優點 -它將在配置文件更新的情況下在文本字段中顯示用戶當前信息,從而提供更好的用戶體驗。 - 節省用戶再次輸入所有信息的時間。 他只更新需要更新的特定信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM