gpt4 book ai didi

ios - UITabBarController 的项目未显示

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

我正在尝试为我的 iOS 应用程序实现底部导航栏。但是,当我创建 tabBarItem 时,它没有显示在 TabBar 上。 TabBar 显示正确。我无法弄清楚问题出在哪里,我们将不胜感激。

如果需要任何其他信息,请给我一个标记。我的代码(简化):

AppDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()

window?.rootViewController = TabBarController()

return true
}
}

TabBarController:

class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()

let homeController = HomeController()
let navigationController = UINavigationController(rootViewController: homeController)
navigationController.title = "Home"
navigationController.tabBarItem.image = UIImage(named: "icon")

viewControllers = [homeController]
}
}

家庭 Controller :

class HomeController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

self.tabBarController?.tabBar.isHidden = false
}
}

编辑:

我删除了代码中不重要的部分,例如评论中提到的 isLoggedIn() 函数调用,并将 MainNavigationController 更改为 TabBarController。

根据 Matts 的回答,我还在 TabBarController 中更改了这一行(但由于某种原因仍然没有显示栏项):

viewControllers = [navigationController]

最佳答案

问题是这一行:

viewControllers = [homeController]

homeController 不是 navigationController。那么 navigationController 发生了什么?没有。它消失在一阵烟雾中。您创建了 navigationController 但随后将其丢弃。

所以你说的关于 navigationController 和它的配置(包括它的标签栏项)没有任何效果;它不在界面中(或其他任何地方)。

这是我完整的测试代码(基于你的代码):

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = MainNavigationController()
return true
}
}
class MainNavigationController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeController = HomeController()
let navigationController = UINavigationController(rootViewController: homeController)
navigationController.tabBarItem.title = "MyCoolTitle"
viewControllers = [navigationController] // not [homeController]
}
}
class HomeController: UIViewController {
}

关于ios - UITabBarController 的项目未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802716/

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