【问题标题】:Pass Data from ViewController > TabBarController>NavigationController>ViewController从 ViewController > TabBarController>NavigationController>ViewController 传递数据
【发布时间】:2019-05-24 15:14:26
【问题描述】:

我有一个登录屏幕,它转到一个标签栏,然后转换到一个导航控制器。我需要将用户名传递给导航控制器的第一个视图控制器。就这样:

登录屏幕 -> TabBarController -> NavigationController -> CustomerMainViewController

我一直在处理堆栈溢出并实现了以下代码,这似乎是共识:

//From my login View Controller
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    let tabVC = segue.destination as! UITabBarController
    let navVC = tabVC.viewControllers!.first as! UINavigationController
    let destVC = navVC.viewControllers.first as! CustomerMainViewController
    destVC.tempName = self.emailTextField.text!
}

@IBAction func loginButtonPresssed(_ sender: Any) {

    self.performSegue(withIdentifier: "GoToTabBar", sender: self)
}
//From my View Controller (CustomerMainView Controller)
override func viewDidLoad() {
    super.viewDidLoad()
    username.text = self.tempName
}

我希望我的视图控制器上的用户名字段被填充,但它是空的。

【问题讨论】:

    标签: swift uinavigationcontroller uitabbarcontroller


    【解决方案1】:

    您的代码应该可以工作。当您定义了多个 segue 时,它​​可能有助于检查 segue 标识符和/或安全地打开视图控制器:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "GoToTabBar" {
            if let tabVC = segue.destination as? UITabBarController, 
                let navVC = tabVC.viewControllers?.first as? UINavigationController,
                let destVC = navVC.viewControllers.first as? CustomerMainViewController {
              destVC.tempName = self.emailTextField.text!
            }
        }
    }
    

    【讨论】:

    • 您是否检查了断点,即 emailTextField.text 不是 nil,调用了 prepare segue 方法等?
    • 是的。 segue 被调用。我不确定,但也许它的事实是我的 segue 是 TabBarController,然后 TabBarController 与 NavigationController 具有关系 segue,并且导航控制器与客户主视图控制器具有 rooviewcontroller 关系segue。也许我选择了不正确的segues?
    • 我想通了。上面的代码是正确的,我有另一个函数被称为覆盖 tempName。哦!非常感谢您的帮助。
    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2016-11-14
    • 2017-01-22
    • 2014-07-17
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多