【问题标题】:Problem adding tab bar items to UITabBar将标签栏项目添加到 UITabBar 时出现问题
【发布时间】:2011-05-31 06:26:58
【问题描述】:

我有一个基于标签栏的应用程序,我正在尝试使用UITabBarsetItems 方法将标签栏项目动态添加到标签栏。

代码如下:

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

其中self.level1TabBarItems 是一个NSMutableArray,其中包含4 个UITabBarItems。 当我运行这段代码时,我从编译器中得到一个异常。

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

我尝试删除UITabBarViewController 并重新添加,但没有成功。

【问题讨论】:

    标签: iphone objective-c uitabbarcontroller uitabbar uitabbaritem


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      希望对以下代码有帮助:

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

      【讨论】:

      • 太棒了。最佳答案。
      【解决方案3】:

      AFAIK 你不能替换标签栏。苹果不允许。我现在去看看。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 2011-01-29
        • 2020-10-31
        • 2010-10-17
        • 1970-01-01
        相关资源
        最近更新 更多