2010-05-03 2 views
0

Я относительно новичок в объективе c, но не программирую и застрял с моим приложением iphone.pushViewController не отображает UIView/Nib с табуляцией и навигационной панелью

Я создал навигационное приложение с навигационной панелью и контроллером панели вкладок. Я установил панель вкладок в качестве корневого контроллера. Я могу переключаться между каждой вкладкой без каких-либо проблем с различными UIViews и UITableView.

Моя проблема заключается в том, что в одном из моих UITableView, которые я вызываю из TabBarController, функция didSelectRowAtIndexPath предполагает отображение нового UIView. Следующий код не дает никаких ошибок и работает нормально, но не показывает новый Nib.

if(newViewController == nil) { 
NSLog(@"yes nil"); 
BookViewController *aNewViewController = [[BookViewController alloc] initWithNibName:@"BookOptionView" bundle:nil]; 
self.newViewController = aNewViewController;  
[aNewViewController release];  
} 
BookAppDelegate *delegate = (BookAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.appNavBar pushViewController:newViewController animated:YES]; 

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

BookViewController *screen = [[BookViewController alloc] initWithNibName:@"BookOptionView" bundle:[NSBundle mainBundle]]; 
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:screen animated:YES]; 
[screen release]; 

Любые идеи, почему я не могу получить View Controller правильно нажать? В файле делегирования приложения я объявил объект AppNavBarController (наследуемый от UINavigationController), называемый appNavBar.

Любая помощь будет оценена!

ответ

0

Если вы хотите представить свой вид как модальное представление с контроллером нав, вы можете сделать это, как показано ниже:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController]; 
[self presentModalViewController:navigationController animated:YES]; 

Кроме того, от того, что я вижу, у вас есть NavController в вашем AppDelegate. Таким образом, я предполагаю, что вы используете глобальный навигатор для всех ваших видов вкладок, чего в идеале не должно быть. Ваш навигатор должен находиться в вашем контроллере табуляции, и вам нужно иметь разные контроллеры навигации на разных вкладках.

+0

Спасибо за ответ. Ваш код выглядит так, что он выполнит то же самое, что и код, который я представил, где он будет отображать новый UIView без глобальной панели навигации и глобальной панели. – james

0

Я действительно нашел свой ответ. Я не уверен, что понимаю, почему мой код выше не работает, но следующее выполняет то, что я хочу: [self.navigationController pushViewController: newControllerName animated: YES];

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