簡體   English   中英

UITabBarController的項目未顯示

[英]Items of UITabBarController not showing

我正在嘗試為我的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]
    } 
}

HomeController

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 {
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM