接收错误:“由于未捕获的异常终止应用程序'NSInvalidArgumentException',原因:'无效项''使用MDCTabBarViewController选择标签栏项目时。查看控制器加载,但在选择第二个选项卡后立即崩溃。
class BusTabBarController: MDCTabBarViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
loadTabBar()
}
func loadTabBar() {
let firstVC = BusStopFlexibleHeaderContainerViewController()
let secondVC = BookmarksFlexibleHeaderContainerViewController()
let thirdVC = UIViewController()
let viewControllersArray = [firstVC, secondVC, thirdVC]
viewControllers = viewControllersArray
let childVC = viewControllers.first
selectedViewController = childVC
tabBar?.delegate = self
tabBar?.items = [UITabBarItem(title: "Recents", image: nil, tag: 0),
UITabBarItem(title: "Favorites", image: nil, tag: 0),
UITabBarItem(title: "YAY", image: nil, tag: 2)]
tabBar?.selectedItem = tabBar?.items.first
tabBar?.backgroundColor = MDCPalette.grey.tint900
tabBar?.selectedItemTintColor = .white
tabBar?.unselectedItemTintColor = MDCPalette.grey.tint400
tabBar?.inkColor = MDCPalette.blueGrey.tint100
}
感谢任何帮助。谢谢!
答案 0 :(得分:1)
我有同样的问题。
时执行MDCTabBarViewController-(void)setSelectedViewController:(nullable UIViewController *)selectedViewController
触发了代码所在的行:
self.tabBar.selectedItem = selectedViewController.tabBarItem;
因此,如果您未将barItem设置为控制器,则会出现该错误,因为该引用为nil
我更新了您的代码,因此我希望这可以解决您的问题(我安装了pod版本26)
class BusTabBarController: MDCTabBarViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
loadTabBar()
}
func loadTabBar() {
let firstVC = BusStopFlexibleHeaderContainerViewController()
firstVC.tabBarItem = UITabBarItem(title: "Recents", image: nil, tag: 0)
let secondVC = BookmarksFlexibleHeaderContainerViewController()
secondVC.tabBarItem = UITabBarItem(title: "Favorites", image: nil, tag: 0)
let thirdVC = UIViewController()
thirdVC.tabBarItem = UITabBarItem(title: "YAY", image: nil, tag: 2)
let viewControllersArray = [firstVC, secondVC, thirdVC]
viewControllers = viewControllersArray
let childVC = viewControllers.first
selectedViewController = childVC
tabBar?.delegate = self
tabBar?.items = [firstVC.tabBarItem,
secondVC.tabBarItem ,
thirdVC.tabBarItem]
tabBar?.selectedItem = tabBar?.items.first
tabBar?.backgroundColor = MDCPalette.grey.tint900
tabBar?.selectedItemTintColor = .white
tabBar?.unselectedItemTintColor = MDCPalette.grey.tint400
tabBar?.inkColor = MDCPalette.blueGrey.tint100
}
}