9

我有一个基于选项卡栏的应用程序,我在其中尝试setItems使用UITabBar.

这是代码:

[self.tabBarController.tabBar setItems:self.level1TabBarItems animated:YES];

self.level1TabBarItems里面有NSMutableArray4的a在哪里UITabBarItems。当我运行这段代码时,我从编译器中得到一个异常。

NSInternalInconsistencyException,原因:不允许直接修改由标签栏控制器管理的标签栏。

我已经尝试删除UITabBarViewController并再次添加它,但它没有工作。

4

3 回答 3

16

The documentation明确指出您不应该直接修改标签栏。改为使用setViewControllers:animated:

于 2011-05-31T06:33:25.373 回答
11

我希望可以帮助您使用以下代码:

func application(_application: UIApplication,
                didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
    // Override point for customization after application launch.

    window = UIWindow(frame: UIScreen.main.bounds)
    window?.rootViewController = LongUITabBarController()
    window?.makeKeyAndVisible()

    return true
}
import UIKit


class LongUITabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let vc1 = VC1_ViewController()
        let vc2 = VC2_ViewController()
        let vc3 = VC3_ViewController()
        let vc4 = VC4_ViewController()

        vc1.tabBarItem = UITabBarItem(title: "LIST ALL", image: UIImage(named: "list"), tag: 1)
        vc2.tabBarItem = UITabBarItem(title: "BEST CELLER", image: UIImage(named: "bestCeller"), tag: 2)
        vc3.tabBarItem = UITabBarItem(title: "MOST LIKE", image: UIImage(named: "like"), tag: 3)
        vc4.tabBarItem = UITabBarItem(title: "NEW", image: UIImage(named: "new"), tag: 4)

        viewControllers = [vc1, vc2, vc3, vc4]
        setViewControllers(viewControllers, animated: true)

        // backGround for tapBarView
        tabBar.barTintColor = #colorLiteral(red: 0.2745098174, green: 0.4862745106, blue: 0.1411764771, alpha: 1)

    }


}
于 2016-12-29T04:40:05.847 回答
1

AFAIK 你不能替换标签栏。苹果不允许。我现在检查一下。

不过,您可以做的是创建一个 segmentedController 并将其重新设置为看起来像一个标签栏。它的用途几乎相同。

编辑:上面,忍者海报说:你不能交替标签栏。我建议使用分段控制器。

于 2011-05-31T06:33:34.657 回答