pushViewController не отображает UIView / Nib с панелью вкладок и панелью навигации - PullRequest
0 голосов
/ 03 мая 2010

Я относительно плохо знаком с задачей c, но не программирую, и застрял в своем приложении для iphone.

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

Моя проблема в том, что в одном из моих 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.

Буду признателен за любую помощь!

Ответы [ 2 ]

0 голосов
/ 03 мая 2010

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

0 голосов
/ 03 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...