【问题标题】:Move to TabBar item with data using button使用按钮移动到带有数据的 TabBar 项
【发布时间】:2019-03-09 02:12:45
【问题描述】:

您好,我想使用 uiviewController 上的按钮选择带有一些数据的标签栏项目,我可以使用此按钮移动到另一个标签栏,但在此方法中我无法移动数据

let second = self.tabBarController?.viewControllers?[2] as? MyAccountViewController
second?.testValue = "Test Value"
self.tabBarController?.selectedIndex = 2

崩溃报告

无法将 'UINavigationController' (0x2496e5280) 类型的值转换为 'xxxxxx.MyAccountViewController' (0x1016cd4c8)。 2019-03-09 08:07:34.281652+0500 xxxxx[390:17926] 无法转换类型的值 'UINavigationController' (0x2496e5280) 到 'xxxxxx.MyAccountViewController' (0x1016cd4c8)。

【问题讨论】:

    标签: ios swift uitabbarcontroller uitabbar


    【解决方案1】:

    您需要验证它是 vc 与

    let nav = self.tabBarController!.viewControllers![2] as! UINavigationController 
    let second = nav.viewControllers!.first as! MyAccountViewController 
    second.testValue = "Test Value"
    self.tabBarController?.selectedIndex = 2
    

    如果目标 vc 未处于活动状态(第一次打开),则在 viewDidLoad 内打印值,如果它处于活动状态,则在 viewWillAppear / viewDidAppear 内打印它

    【讨论】:

    • 是的,我在 viewWillAppear 中做了,但它没有更新值
    • 使用了警卫?因为您的代码可能会在没有设置值的情况下通过,因为目标 vc 类名不是它
    • 使用守卫什么都不会发生不动,我在索引 2 上的视图控制器意味着第三个选项卡是 myaccountviewcontroller
    • 如果是这样,那么守卫不会返回确保它真的是 MyAccountViewController 在 IB 中分配的类?
    • 从情节提要分配的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多