首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TabBarController>NavigationController>ViewController > ViewController传递数据

从TabBarController>NavigationController>ViewController > ViewController传递数据
EN

Stack Overflow用户
提问于 2019-05-24 23:14:26
回答 1查看 36关注 0票数 0

我有一个登录屏幕,它转到选项卡栏,然后转换为导航控制器。我需要将用户名传递给导航控制器的第一个视图控制器。所以它是这样的:

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

我已经遍历了堆栈溢出,并实现了以下代码,这似乎是大家的共识:

代码语言:javascript
复制
//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
}

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

EN

回答 1

Stack Overflow用户

发布于 2019-05-24 23:43:14

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

代码语言:javascript
复制
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!
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56295376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档