material 组件选项卡栏控制器错误
material components tab bar controller error
收到错误:"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid item'" 使用 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
}
感谢任何帮助。谢谢!
我也遇到了同样的问题。在执行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
}
}
收到错误:"Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid item'" 使用 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
}
感谢任何帮助。谢谢!
我也遇到了同样的问题。在执行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
}
}