我试图将自定义viewController放入UITabBarController,然后呈现它。但当我尝试下面的所有内容时,我得到的是一个空白屏幕,底部有一个空白的标签栏。
@IBAction func didOpenTabs(_ sender: Any) {
let tabBarController = UITabBarController()
let vc = ViewController()
let controllers = [vc]
tabBarController.viewControllers = controllers
self.present(tabBarController, animated: true, completion: nil)
}
我需要访问视图控制器,因为视图控制器需要从变量加载数据,并在关闭时将数据保存到同一个变量。
我觉得我在基础层面上做错了什么但是我不熟悉swift以确定它是什么。
答案 0 :(得分:0)
问题是,在调用viewControllers
之前无法分配viewDidLoad
,因为内部UITabBar
尚未初始化,因此要解决问题,您可以将其子类化UITabBarController
要确保您在正确的位置(viewControllers
)设置了viewDidLoad
,最终您的代码可能是:
import UIKit
class MyTabBarController:UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let vc1 = UIViewController()
vc1.view.backgroundColor = UIColor.green
vc1.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks, tag: 0)
let vc2 = UIViewController()
vc2.view.backgroundColor = UIColor.red
vc2.tabBarItem = UITabBarItem(tabBarSystemItem: .history, tag: 1)
viewControllers = [vc1, vc2]
}
}
class ViewController: UIViewController {
@IBAction func showTabVc() {
self.present(MyTabBarController(), animated: true, completion: nil)
}
}