2015-03-19 4 views
1

Так что мне нужно добавить новый UITabBarItem в мой существующий UITabBar, который был создан в раскадровке.Добавить UITabBarItem в уже существующий UITabBar (сделанный в раскадровке)

До сих пор я думаю, что мне удалось получить доступ к UITabBar соответствующим образом, но я не могу создать UITabBarItem и добавить его в UITabBar.

До сих пор вот что я получил:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    var tabBarController = self.window!.rootViewController as UITabBarController 
    var tabBar = tabBarController.tabBar as UITabBar 

    var tabBarItem1 = tabBar.items![0] as UITabBarItem 
    var tabBarItem2 = tabBar.items![1] as UITabBarItem 
    var tabBarItem3 = tabBar.items![2] as UITabBarItem 

    tabBarItem1.selectedImage = UIImage(named: "tab-frame-on") 
    tabBarItem2.selectedImage = UIImage(named: "tab-quote-on") 
    tabBarItem3.selectedImage = UIImage(named: "tab-hash-on") 

    var instaTab: UITabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on")) 
    tabBar.items?.append(instaTab) 

    return true 

}

Эта функция является частью AppDelegate. Как вы можете видеть в строке 14, и я создаю UITabBarItem следующим образом: var instaTab: UITabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on")), а затем попытаюсь добавить его к элементам предварительной блокировки, добавив их. Это дает мне ошибку SIGABRT в создании экземпляра класса AppDelegate.

Что я делаю неправильно?

ответ

2

И если вы посмотрите на консоль Xcode, он должен сказать, что вы сделали неправильно.

*** Нагрузочное приложение из-за неперехваченное исключение «NSInternalInconsistencyException», причиной: "Непосредственно модифицирования панели вкладок под управлением контроллером панели вкладок не допускается.

tabBar.items контролируется UITabBarController. Вы должны изменить свойство viewControllers UITabBarController.

.: например

tabBarItem3.selectedImage = UIImage(named: "tab-hash-on") 


let instaViewController = UIViewController() 
instaViewController.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on")) 

var viewControllers = tabBarController.viewControllers! 
viewControllers.append(instaViewController) 
tabBarController.viewControllers = viewControllers 


return true 
+0

Эй спасибо много! В качестве урока, который вы четко указали, я больше обращу внимание на консоль Xcode! Кроме того, почему именно нам не разрешено напрямую изменять панель вкладок? – zillaofthegods

Смежные вопросы