ios - iOS:如何通过单击 tabBarItem 的第 3 个索引打开 tabBarItem 的第 0 个索引
问题描述
tabBarItem
我的一个场景中有 5 个,我必须通过单击第三个UITabBarController
打开第一个索引UITabBarItem
UITabBarItem
我的方法如下:
extension FiveTabbarController: UITabBarControllerDelegate {
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if item == (self.tabBar.items!)[2] {
tabBar.selectedItem = (self.tabBar.items!)[0] // ERROR
self.selectedIndex = 0 // NOT WORKING
}
}
}
错误:*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不允许直接修改由标签栏控制器管理的标签栏。”
请指导我如何实现这一目标。
解决方案
您可以通过执行以下操作来实现该行为:
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if selectedIndex == 2 {
self.selectedIndex = 0
}
}
错误的原因是因为您不应该修改 selectedItem,而只修改索引。通过修改索引,标签栏控制器将设置 selectedItem。
已编辑 没有注意到您使用的是 tabBar 的方法而不是 tabbarcontroller 的。
推荐阅读
- makefile - 如何在makefile中阻止“make”命令
- node.js - 如何使用 zeit/pkg 正确打包我的 express 应用程序资产和脚本
- r - How to draw Polygon for lots of lat/long coordinates and calculate surface are?
- regex - 从正则表达式匹配中删除最后一个字符
- gradle - JAXBException: class ... 此上下文不知道它的任何超类
- python - 从字典列表中的字典中删除键
- jenkins - 使用 Kubernetes 和 Jenkins 在持续交付中实现手动审批
- python - 预期的
, 但发现 google-ads.yaml 文件错误 Python 3 - c - 无法解析标头中定义的 Eclipse C 常量
- jmeter - 我想知道我的服务器每秒可以处理多少个请求?