Unable to see controller added to UITabBar programmatically swift(无法看到以编程方式快速添加到UITabBar的控制器)
问题描述
我以编程方式从情节提要添加了2个选项卡栏项目,并添加了一个UITabBarItem-菜单。我可以成功地打开与我使用故事板创建的tabBarItems相对应的控制器。但是,当我点击"菜单"时,会出现一个空白的黑屏
@objc public class MainScreenTabsController : UITabBarController {
public override func viewDidLoad() {
super.viewDidLoad()
let tabController = MyViewController()
let tabBarItem = UITabBarItem(title: "Menu", image: UIImage(named: "more-options.png"), selectedImage: UIImage(named: "more-options"))
tabController.tabBarItem = tabBarItem
var array = self.viewControllers
array?.append(tabController)
self.viewControllers = array
}
public func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
return true;
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
}
我遵循了几个添加选项卡栏项目的教程,但它们都有我编写的代码。我是不是错过了一些非常基本的东西?
编辑:
菜单控制器的类
@objc public class MyViewController:UIViewController {
public override func viewDidLoad() {
super.viewDidLoad()
}
public override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
}
推荐答案
您的应用程序正在执行代码告诉它执行的操作。您正在创建MyViewController
的实例,并将其添加到UITabBarController
的视图控制器数组。
您的MyViewController
类文件只是定义了一个空白的黑色视图。
编辑情节提要时,将MyViewController
类分配给要使用的VC,还要给它一个Storyboard ID
-例如MyVC
。然后,将viewDidLoad
函数编辑为:
public override func viewDidLoad() {
super.viewDidLoad()
// wrong way
// let tabController = MyViewController()
if let tabController = storyboard?.instantiateViewController(withIdentifier: "MyVC") as? MyViewController {
let tabBarItem = UITabBarItem(title: "Menu", image: UIImage(named: "more-options.png"), selectedImage: UIImage(named: "more-options"))
tabController.tabBarItem = tabBarItem
var array = self.viewControllers
array?.append(tabController)
self.viewControllers = array
}
}
这篇关于无法看到以编程方式快速添加到UITabBar的控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!