使用按钮移动到带有数据的 TabBar 项
Posted
技术标签:
【中文标题】使用按钮移动到带有数据的 TabBar 项【英文标题】:Move to TabBar item with data using button 【发布时间】: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)。
【问题讨论】:
【参考方案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 中分配的类?
从情节提要分配的以上是关于使用按钮移动到带有数据的 TabBar 项的主要内容,如果未能解决你的问题,请参考以下文章
如果您推送并呈现多个视图控制器,如何移动到 parentViewController?