2015-11-18 5 views
0

У меня есть панель вкладок, элементы которой я хочу изменить в зависимости от настроек пользователя. Поэтому мне нужно иметь возможность добавлять/удалять элементы из панели вкладок программно. Вот мой код:set tab bar items programatically

class TabBarViewController: UITabBarController { 
var controllerArray = [UIViewController]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 

    self.tabBar.tintColor = UIColor.greenColor() 

    let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
    let controller1 = storyBoard.instantiateViewControllerWithIdentifier("Navigation2") as! nav2 
    let controller2 = storyBoard.instantiateViewControllerWithIdentifier("Explore") as! ExploreNavigation 
    let controller3 = storyBoard.instantiateViewControllerWithIdentifier("friends") as! ExploreNav 
    let controller4 = storyBoard.instantiateViewControllerWithIdentifier("controller3ID") as! controller3VC 
    controllerArray.append(controller1) 
    controllerArray.append(controller2) 
    controllerArray.append(controller3) 
    controllerArray.append(controller4) 
    self.tabBarController?.setViewControllers(controllerArray, animated: true) 

    } 


} 

, но если я закомментировать одну из линий, например, как это:

 //controllerArray.append(controller2) 

так, что этот контроллер не обособленно controllersArray, контроллер по-прежнему отображается в панель вкладок. Что я делаю не так?

Я также попробовал это, и это не сработало:

self.tabBarController?.viewControllers = controllerArray 
+0

Вы хотите изменить элементы в панели вкладок или контроллерах вида в контроллере панели вкладок или обоих? Вы называете одно, но ваш вопрос предлагает другой. – beyowulf

+0

Извините, я не совсем понимаю разницу между контроллером вида в панели вкладок и элементом панели вкладок. элемент панели вкладок означает логотип внутри панели вкладок? Я хочу сказать, что я хочу, чтобы четвертая (последняя вкладка) имела другой логотип/изображение и другой контроллер вида на четвертой вкладке. Надеюсь, это ясно. – joey

+1

Этот код не имеет смысла. Ваш 'TabBarViewController' расширяет' UITabBarController', но у него также есть свойство типа 'UITabBarController'. Он должен быть тем или иным, а не тем и другим. – rmaddy

ответ

4

Просто сказать

self.setViewControllers(controllerArray, animated: true) 

вместо

self.tabBarController?.setViewControllers(controllerArray, animated: true) 

Вы подклассов UITabBarController не UIViewController, чтобы вы не нужно или, по крайней мере, не нужно, свойство tabBarController.

+0

да вот и все. большое спасибо! – joey