gpt4 book ai didi

ios - swift 和 Xcode。添加到 TabBarController 时所有 UIViewController 都会变黑

转载 作者:行者123 更新时间:2023-11-29 05:52:47 26 4
gpt4 key购买 nike

我正在尝试以编程方式创建 UITabBarController,并向其中添加多个 NavigationController。当 UITabBarController 包含一个 NavigationController 时 - 一切都按预期工作(参见图片)

ok behavior

但是当我向 UITabBarController 添加多个 NavigationController 时,每个屏幕都会变黑(参见另一张图片)

not ok behavior

在选项卡 1、2、3、4 和 5 之间切换时会显示相同的黑屏。

这是如何创建 UITabBarController 的代码

class TabBarViewController : UITabBarController{

override func viewDidLoad() {
super.viewDidLoad()

let controllers = [HistoryViewController.self, StatsViewController.self, DashboardViewController.self, ExpenseManagerViewController.self, ProfileViewController.self]

var navControllers: [UINavigationController] = []

controllers.forEach{ ctrl in
navControllers.append(getController(from: ctrl))
}

tabBar.tintColor = Color.green

viewControllers = navControllers
}

private func getController<TType: UIViewController>(from type: TType.Type) -> UINavigationController{

let ctrl = TType()
let navCtrl = UINavigationController(rootViewController: ctrl)

let ctrlName = String.init(describing: type.self).replacingOccurrences(of: "ViewController", with: String.empty)

navCtrl.tabBarItem.title = ctrlName
navCtrl.tabBarItem.image = UIImage(named: ctrlName)
navCtrl.navigationBar.topItem?.title = ctrlName

return navCtrl
}
}

这些 UIViewController 是使用“添加 Cocoa Touch Class”选项创建的,并已分配具有一些最小设计的 *.xib 文件(请参阅另一张图片)

file list

任何关于当多个(2个或更多)导航 Controller 添加到 TabBarController 时所有屏幕变黑的帮助将不胜感激。谢谢

最佳答案

显然你忘记了如何使用 xib 文件初始化 UIViewControllers:

     private func getController<TType: UIViewController>(from type: TType.Type) -> UINavigationController{

let ctrl = TType(nibName: String.init(describing: type.self), bundle: nil)

    let navCtrl = UINavigationController(rootViewController: ctrl)

关于ios - swift 和 Xcode。添加到 TabBarController 时所有 UIViewController 都会变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com