2016-04-08 3 views
0

У меня есть tableViewController, который после использования на ячейке принимает вас на FirstViewController FirstViewController имеет UITabBar с 4 элементами. Я хочу программно подключить каждую из этих кнопок/элементов к viewController, которые уже существуют в моем проекте.Как программно связывать UITabBar с разными диспетчерами ViewControllers с NIB, когда UITabBar не является rootViewController

Я сделал много исследований, но не поступили на то, что решение этой проблемы

То, что я до сих пор FirstViewController, SecondViewController, ThirdViewController, FourthViewController

в FirstViewController.xib У меня есть TabBar с 4-мя иконками.

FirstViewController.h 

@property (strong, nonatomic) IBOutlet UITabBarController *tabBarController; 
@property (weak, nonatomic) IBOutlet UITabBarItem *tabBar; 
@property (weak, nonatomic) IBOutlet UITabBarItem *firstItem; 
@property (weak, nonatomic) IBOutlet UITabBarItem *secondItem; 
@property (weak, nonatomic) IBOutlet UITabBarItem *thirdItem; 
@property (weak, nonatomic) IBOutlet UITabBarItem *fourthItem; 

FirstViewController.m 

- (void)viewDidLoad { 
    FirstViewController *first = [[FirstViewController alloc] init]; 
    SecondViewController *second = [[SecondViewController alloc] init]; 
    ThirdViewController *third = [[ThirdViewController alloc] init]; 
    FourthViewController *fourth = [[FourthViewController alloc] init]; 

    self.tabBarController.viewControllers = [NSArray arrayWithObject: first, second, third, fourth, nil]; 

} 

Этот код не работает, когда я Выступ на четвертой кнопке, например, он не показывает fourthViewController пера

ответ

1

Предполагая, что каждый UIViewController подкласс имеет связанный .xib(СИБ), затем используйте назначенный инициализатор.

Вместо [[FirstViewController alloc] init] использовать initWithNibName: bundle: для каждого соответствующего контроллера вида вместо.

пример -

[[FirstViewController alloc] initWithNibName:@"nameOfNibFile" bundle:nil]; 
+0

Я изменил код для 'FirstViewController * первый = [[FirstViewController Alloc] initWithNib: @ "FirstViewController" пачке: ноль];', но он по-прежнему не работает. @Bamsworld – ioskaveen

+0

А я вижу, что реализация, которую вы имеете в FirstViewController, должна быть в своем подклассе UITabBarController (который, как я вижу, у вас есть выход к одному), который импортирует заголовки контроллеров представлений, которые вы хотите добавить к ним. Я знаю, что вы делаете это программно, но, возможно, стоит быстро начать новый проект с шаблоном панели вкладок и посмотреть на раскадровку, чтобы лучше понять, как все это происходит. – Bamsworld