使用按钮移动到带有数据的 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?

使用带有约束的持续时间动画快速移动按钮并在其中检测触摸

带有后退按钮的 Tabbar Controller 到 ViewController

导航栏按钮项目“撰写”在转场期间向右移动

从简单的视图控制器移动到 TAB BAR 控制器

下有tableView的透明tabbar