2014-08-01 17 views
2

Ниже приведен мой код, и он отображает панель вкладок только для данных двух элементов панели вкладок, но в других представлениях не отображается панель вкладок.Как показать панель вкладок во всех представлениях

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

self.startQuizViewController = [[StartQuizViewController alloc] initWithNibName:nil bundle:nil]; 
self.scoreViewController = [[ScoreViewController alloc] initWithNibName:nil bundle:nil]; 

self.startQuizViewController.title = @"QUIZ"; 
self.scoreViewController.title = @"SCORES"; 

self.tabBarController = [[UITabBarController alloc] init]; 

self.tabBarController.viewControllers = [NSArray arrayWithObjects:self.startQuizViewController,self.scoreViewController,nil]; 

_navigationController=[[UINavigationController alloc]initWithRootViewController:self.tabBarController]; 

[self.window addSubview:self.navigationController.view]; 
self.window.rootViewController = self.navigationController; 

[self.window makeKeyAndVisible]; 
return YES; 

код в письменной форме в didFinishLaunchingWithOptions в AppDelegate.m.

+0

Вы можете легко сделать все это без кода с помощью 'раскадровки'. И это также решит вашу проблему. –

+0

Я использую конструктор интерфейса, предлагаю для того же –

ответ

0

Используйте этот

UIViewController *viewController1, *viewController2; 

    viewController1 = [[UIViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] ; 
    UINavigationController *navigationcontroller = [[UINavigationController alloc] initWithRootViewController:viewController1] ; 

    viewController2 = [[UIViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] ; 
UINavigationController *navigationcontroller2 = [[UINavigationController alloc] initWithRootViewController:viewController2] ; 


    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, navigationcontroller2, nil]; 

и, наконец,

self.window.rootViewController = self.tabBarController; 

Таким образом, у вас есть раздельные контроллеры навигации как для контроллера TabBar.

+1

Спасибо, это был отличный ответ –

1

изменения в этой части:

_navigationController=[[UINavigationController alloc]initWithRootViewController:self.tabBarController]; 

[self.window addSubview:self.navigationController.view]; 
self.window.rootViewController = self.navigationController; 

к этому:

self.window.rootViewController = self.tabBarController; 

вы не можете иметь tabbarcontroller внутри навигационного контроллера. так что просто удалить навигационный контроллер и установить контроллер бар вкладки, как вид корневой контроллер

редактировать:

self.startQuizViewController = [[StartQuizViewController alloc] initWithNibName:nil bundle:nil]; 
self.scoreViewController = [[ScoreViewController alloc] initWithNibName:nil bundle:nil]; 

self.startQuizViewController.title = @"QUIZ"; 
self.scoreViewController.title = @"SCORES"; 

self.tabBarController = [[UITabBarController alloc] init]; 

UINavigationController * nav1 = [[UINavigationController alloc] initWithRootViewController:self.startQuizViewController]; 

UINavigationController * nav2 = [[UINavigationController alloc] initWithRootViewController:self.scoreViewController]; 


self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil]; 


self.window.rootViewController = self.tabBarController; 

[self.window makeKeyAndVisible]; 

это все. теперь вы можете нажать контроллер просмотра внутри этого контроллера и всегда иметь панель вкладок.

+0

, но когда я сделал это, он не показал ожидаемый результат –

+0

также я хочу показать панель навигации и панель вкладок как в моем приложении –

+0

не хотите, чтобы панель вкладок была корнем просмотреть контроллер? если вы хотите осуществлять навигацию внутри каждой вкладки, тогда вы должны поместить ваш контроллер (self.startQuizViewController) внутри навигационного контроллера. затем добавьте контроллер навигации в панель вкладок. –

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