Ios 4个选项卡的选项卡栏控制器中的同一视图控制器给出了错误的选定选项卡控制器选定索引
我正在尝试为我的应用程序制作模板。。。假设我的应用程序加载相同的视图控制器,该控制器具有用于4个选项卡的CollectionView。根据所选索引,我必须将内容加载到集合视图中。我正在从Appdelegate手动设置选项卡栏。我的问题是,这是否可能类似于一次为Tabbarcontroller的所有4个选项卡实例化相同的viewcntroller。如果是,我如何正确知道选择了哪个索引 Appdelegate中tabBarcontroller的代码Ios 4个选项卡的选项卡栏控制器中的同一视图控制器给出了错误的选定选项卡控制器选定索引,ios,swift,tabs,tabbarcontroller,Ios,Swift,Tabs,Tabbarcontroller,我正在尝试为我的应用程序制作模板。。。假设我的应用程序加载相同的视图控制器,该控制器具有用于4个选项卡的CollectionView。根据所选索引,我必须将内容加载到集合视图中。我正在从Appdelegate手动设置选项卡栏。我的问题是,这是否可能类似于一次为Tabbarcontroller的所有4个选项卡实例化相同的viewcntroller。如果是,我如何正确知道选择了哪个索引 Appdelegate中tabBarcontroller的代码 self.wind
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let tabBarController = UITabBarController()
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let firstImage = UIImage(named: "image1")
let secondImage = UIImage(named: "image2")
var controllers = [UIViewController]()
for var i = 0; i < self.myList.count; i++ {
let vc : ViewControllerTwo = storyboard.instantiateViewControllerWithIdentifier("view1") as! ViewControllerTwo
if(i == 0 || i == 3)
{
vc.tabBarItem = UITabBarItem(
title: self.myList[i],
image: firstImage,
tag: i)
controllers.append(vc)
}
else
{
vc.tabBarItem = UITabBarItem(
title: self.myList[i],
image: secondImage,
tag: i)
controllers.append(vc)
}
}
self.tabBarController.viewControllers = controllers
self.window?.rootViewController = self.tabBarController
self.self.window?.rootViewController = self.tabBarController
self.window?.makeKeyAndVisible()
self.window=UIWindow(框架:UIScreen.mainScreen().bounds)
设tabBarController=UITabBarController()
让故事板:UIStoryboard=UIStoryboard(名称:“Main”,bundle:nil)
让firstImage=UIImage(名为:“image1”)
让secondImage=UIImage(名为:“image2”)
变量控制器=[UIViewController]()
对于var i=0;i
如果您将类设置为选项卡栏控制器的代理,则会调用didSelectViewController
delegate方法。然后,您可以使用控制器数组来确定索引
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let tabBarController = UITabBarController()
tabBarController.delegate = self
func tabBarController(_ tabBarController: UITabBarController,
didSelectViewController viewController: UIViewController) {
if let index = self.controllers.indexOf(viewController) {
// Do something with index
}
}
我想我使用了一个带有NSTimer的方法解决了这个问题,因为有时更改和获取状态会给出错误的状态,如这里所述。您应该将您的类设置为选项卡栏控制器的委托,然后您将得到对didSelectViewController
的调用。您可以将所选视图控制器与控制器
数组进行比较,以确定所选视图控制器的索引您不需要NSTimer,除非您做错了…@Paulw11..您可以提供一些示例代码吗?用于什么?你的问题是什么还不清楚。