我有一个基于标签栏的应用程序,我尝试使用setItems
的{{1}}方法动态地将标签栏项添加到标签栏。
以下是代码:
UITabBar
其中[self.tabBarController.tabBar setItems:self.level1TabBarItems animated:YES];
是self.level1TabBarItems
,其中包含4 NSMutableArray
。
当我运行此代码时,我从编译器中获得异常。
NSInternalInconsistencyException,原因:不允许直接修改由标签栏控制器管理的标签栏。
我已尝试删除UITabBarItems
并重新添加,但无效。
答案 0 :(得分:13)
The documentation
明确指出您不应直接修改标签栏。请改用setViewControllers:animated:
。
答案 1 :(得分:5)
我希望可以帮助您使用以下代码:
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)
}
}
答案 2 :(得分:1)
AFAIK你不能替换tabbar。 Apple不允许这样做。我现在就检查一下。
你可以做的是创建一个segmentedController并重新设置它看起来像一个tabbar。它的用法几乎相同。
编辑:上面,忍者海报说:你不能替换tabbar。我建议使用分段控制器。