我在故事板中创建了一个标签栏控制器,有5个标签栏项。我想以编程方式从" viewcontrollers"中删除一个视图控制器。标签栏堆栈的数组。当我删除上面的视图控制器时,我还希望应用程序显示一些其他选项卡项。我已尝试使用以下代码,但它无效。
if let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController {
tabBarController.viewControllers?.remove(at: 2)
tabBarController.selectedIndex = 1
}
答案 0 :(得分:1)
试试这个:
if let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController {
var viewControllers = tabBarController.viewControllers
viewControllers.remove(at: 2)
tabBarController.viewControllers = viewControllers
tabBarController.selectedIndex = 1
}
答案 1 :(得分:1)
重新分配viewControllers
财产,而不是您不想要的财产:
if let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController {
tabBarController.selectedIndex = 1
var controllers = tabBarController.viewControllers
controllers.remove(at: 2)
tabBarController.viewControllers = controllers
}
现在这段代码还可以,但问题是以下几行:
let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController
这会创建一个新的UITabBarController
实例 - 但您想要访问由storyboads实例化并在屏幕上显示的实例。但是,如果没有更多背景信息,很难就如何访问它提供建议。考虑到你从直接嵌入标签栏控制器的viewController中调用此代码,我将从这开始:
if let tabBarController = self.tabBarController {
tabBarController.selectedIndex = 1
var controllers = tabBarController.viewControllers
controllers.remove(at: 2)
tabBarController.viewControllers = controllers
}
答案 2 :(得分:0)
BIT