gpt4 book ai didi

ios - 4 个选项卡的选项卡栏 Controller 中的相同 View Controller 给出了错误的选定 tabcontroller 选定索引

转载 作者:搜寻专家 更新时间:2023-11-01 07:24:47 25 4
gpt4 key购买 nike

我正在尝试为我的应用程序制作一个模板...假设我的应用程序加载了相同的 View Controller ,该 View Controller 具有用于 4 个选项卡的 CollectionView。根据选定的索引,我必须将内容加载到 Collection View 中。我正在从 Appdelegate 手动设置选项卡栏。我的问题是这是否可能像一次为 Tabbarcontroller 的所有 4 个选项卡实例化相同的 viewcntroller。如果是,我如何正确知道选择了哪个索引?

Appdelegate 中 tabBarcontroller 的代码

                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()

最佳答案

如果您将您的类设置为标签栏 Controller 的委托(delegate),您将调用 didSelectViewController 委托(delegate)方法。然后,您可以使用 controllers 数组来确定索引;

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
}
}

关于ios - 4 个选项卡的选项卡栏 Controller 中的相同 View Controller 给出了错误的选定 tabcontroller 选定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36832820/

25 4 0