在swift中从uiview访问选项卡栏
在我的应用程序中,当我收到任何通知时,我会显示一个customView。如果用户触摸屏幕上的任何地方,视图就会消失。我有一个带有四个选项卡的在swift中从uiview访问选项卡栏,swift,uiview,tabbar,Swift,Uiview,Tabbar,在我的应用程序中,当我收到任何通知时,我会显示一个customView。如果用户触摸屏幕上的任何地方,视图就会消失。我有一个带有四个选项卡的uitabar。收到通知后,当我单击视图时,应选择第二个选项卡(我可能在应用程序中的任何位置)。但我无法选择第二个选项卡。它总是打开第一个选项卡。如何从这个customView中调用“didSelect项”?下面是我的代码。请验证并帮助我解决问题 我的代码是: { let storyBoard = UIStoryboard(name: "Main",
uitabar
。收到通知后,当我单击视图时,应选择第二个选项卡(我可能在应用程序中的任何位置)。但我无法选择第二个选项卡。它总是打开第一个选项卡。如何从这个customView中调用“didSelect项”?下面是我的代码。请验证并帮助我解决问题
我的代码是:
{
let storyBoard = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainTabbarView") as? MainTabbarView
storyBoard?.selectItem(withIndex: 3)
}
func selectItem(withIndex index: Int) {
if let controller = tabBarController, let tabBar = tabBarController?.tabBar, let items = tabBarController?.tabBar.items {
guard index < items.count else { return }
controller.selectedIndex = index
controller.tabBar(tabBar, didSelect: items[index])
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if let items = tabBar.items {
items.enumerated().forEach { if $1 == item { print("your index is: \($0)") } }
}
}
在我的UITabBarController中,我编写了以下代码:
{
let storyBoard = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MainTabbarView") as? MainTabbarView
storyBoard?.selectItem(withIndex: 3)
}
func selectItem(withIndex index: Int) {
if let controller = tabBarController, let tabBar = tabBarController?.tabBar, let items = tabBarController?.tabBar.items {
guard index < items.count else { return }
controller.selectedIndex = index
controller.tabBar(tabBar, didSelect: items[index])
}
}
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
if let items = tabBar.items {
items.enumerated().forEach { if $1 == item { print("your index is: \($0)") } }
}
}
func selectItem(带索引:Int){
如果let controller=tabBarController,则让tabBar=tabBarController?.tabBar,让items=tabBarController?.tabBar.items{
保护索引
根据您的代码,您正在初始化TabBarController的一个新实例,而不是使用活动实例,因此它实际上不会更新当前的选项卡栏。您可以访问tabBarController拥有的视图控制器。然后从那里:
activeViewController.tabBarController.selectedIndex = 1
应该可以了。谢谢您的回复。我可以写下面的代码吗?var topVC=UIApplication.shared.keyWindow?.rootViewController而((topVC!.presentedViewController)!=nil){topVC=topVC!.presentedViewController}topVC?.tabBarController?.selectedIndex=2是的,只要tabBarController和视图控制器设置正确,就可以尝试,这应该行得通。