将标签栏项目添加到 UITabBar 时出现问题
Posted
技术标签:
【中文标题】将标签栏项目添加到 UITabBar 时出现问题【英文标题】:Problem adding tab bar items to UITabBar 【发布时间】:2011-05-31 06:26:58 【问题描述】:我有一个基于标签栏的应用程序,我正在尝试使用UITabBar
的setItems
方法将标签栏项目动态添加到标签栏。
代码如下:
[self.tabBarController.tabBar setItems:self.level1TabBarItems animated:YES];
其中self.level1TabBarItems
是一个NSMutableArray
,其中包含4 个UITabBarItems
。
当我运行这段代码时,我从编译器中得到一个异常。
NSInternalInconsistencyException,原因:不允许直接修改由标签栏控制器管理的标签栏。
我尝试删除UITabBarViewController
并重新添加,但没有成功。
【问题讨论】:
【参考方案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 并重新设置它的样式,使其看起来像一个标签栏。它的用途几乎相同。
编辑:上面,忍者海报说:你不能交替标签栏。我建议使用分段控制器。
【讨论】:
以上是关于将标签栏项目添加到 UITabBar 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
添加选项卡栏项 (UITabBar) 时 XCode 4.3 崩溃