gpt4 book ai didi

iOS:如何通过单击 tabBarItem 的第 3 个索引打开 tabBarItem 的第 0 个索引

转载 作者:行者123 更新时间:2023-12-01 16:05:13 27 4
gpt4 key购买 nike

我有 5 tabBarItem在我的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
}

}
}

Error: *** Terminating app due to uncaught exception'NSInternalInconsistencyException', reason:'Directly modifying a tab bar managed by a tab bar controller is not allowed.'


请指导我如何实现这一目标。

最佳答案

您不希望 View Controller 的基类成为 UITabBarDelegate。如果你这样做,你所有的 View Controller 子类都将是标签栏代表。我认为你想要做的是扩展 UITabBarController

class FiveTabbarController: UITabBarController, UITabBarControllerDelegate {
然后,在该类中,覆盖 viewDidLoad 并将委托(delegate)属性设置为 self:
 override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
现在这个类既是 UITabBarDelegate(因为 UITabBarController 实现了该协议(protocol)),也是 UITabBarControllerDelegate,您可以根据需要覆盖/实现这些委托(delegate)的方法,例如:
    extension FiveTabbarController: UITabBarControllerDelegate {

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if let getSelectedIndex = tabBarController.viewControllers?.firstIndex(of: viewController), getSelectedIndex == 2 {
self.selectedIndex = 0
}
}
}

关于iOS:如何通过单击 tabBarItem 的第 3 个索引打开 tabBarItem 的第 0 个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63209573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com