You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS开发:UITabBarController的tabBarItem不显示问题求助

Hey there! Let's troubleshoot why your TabBarItems aren't showing up even though the TabBar itself is displaying correctly. I’ve dealt with this exact issue a bunch of times, so here are the most common fixes to check off your list:

1. Make sure every child view controller has a configured TabBarItem

You need to explicitly set the tabBarItem (with a title and image) for each view controller you want to add to the TabBar. If you skip this step, or use an incorrect image name (so the image can’t be found), the item won’t appear. Here’s an example:

let homeVC = HomeViewController()
// Using custom images
homeVC.tabBarItem = UITabBarItem(
    title: "Home",
    image: UIImage(named: "home-icon"),
    selectedImage: UIImage(named: "home-selected-icon")
)
// Or use a system-provided item if you prefer:
// homeVC.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0)

2. Add your child view controllers to the TabBarController’s viewControllers array

The TabBar can’t display items if you don’t pass in the view controllers it’s supposed to manage. Double-check that you’re populating this array correctly:

let tabBarController = UITabBarController()
let homeVC = HomeViewController()
let profileVC = ProfileViewController()

// Configure each VC's tabBarItem first...

// Add the VCs to the TabBarController
tabBarController.viewControllers = [homeVC, profileVC]

3. Verify the TabBarController is your window’s root view controller

In your application(_:didFinishLaunchingWithOptions:) method, ensure you’re setting the TabBarController as the window’s root and making the window visible:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Initialize the window
    window = UIWindow(frame: UIScreen.main.bounds)
    window?.makeKeyAndVisible()
    
    // Set up your TabBarController and child VCs
    let tabBarController = UITabBarController()
    // Configure child VCs and their tabBarItems...
    
    // Assign as root view controller
    window?.rootViewController = tabBarController
    
    return true
}

If you forget to set the root or call makeKeyAndVisible(), the TabBar (and its items) won’t render properly.

4. Check your image rendering mode

iOS defaults to rendering TabBarItem images as templates, which means their color is controlled by the TabBar’s tintColor. If your image is the same color as the TabBar background, it’ll be invisible. Fix this by setting the image’s rendering mode to original:

let homeImage = UIImage(named: "home-icon")?.withRenderingMode(.alwaysOriginal)
let homeSelectedImage = UIImage(named: "home-selected-icon")?.withRenderingMode(.alwaysOriginal)
homeVC.tabBarItem = UITabBarItem(title: "Home", image: homeImage, selectedImage: homeSelectedImage)

5. Rule out title/color conflicts

Sometimes items are there but hidden because the title color matches the TabBar background, or the font is too small. You can explicitly set title attributes to test this:

// Set normal and selected title colors
UITabBarItem.appearance().setTitleTextAttributes(
    [.foregroundColor: UIColor.systemBlue],
    for: .normal
)
UITabBarItem.appearance().setTitleTextAttributes(
    [.foregroundColor: UIColor.systemRed],
    for: .selected
)

Also make sure your title string isn’t empty or accidentally set to nil.

6. Check for custom TabBar interference

If you’ve subclassed UITabBar or added custom layout logic, it might be accidentally hiding the items. Try temporarily switching back to the default system TabBar to see if the items appear—this will help you confirm if the custom code is the culprit.

If none of these fixes work, share your full application(_:didFinishLaunchingWithOptions:) code and how you’re initializing your view controllers, and I can help dig deeper!

内容的提问来源于stack exchange,提问作者Reindl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:05:32