2011-12-18 2 views
0

У меня есть контроллер вида навигации, который толкает «viewController1» должным образом. Затем из «viewController1» вызывается функция goToApp, чтобы нажать «appViewController». Функция goToApp выполняется, но приложение остается на том же самом представлении «viewControlller1». Как его подтолкнуть? Спасибо.Контроллер просмотра не выбрано из навигационного контроллера

из viewController1:

navigationViewController *theInstance = [[navigationViewController alloc] init]; 
    [theInstance goToApp]; 

в navigationViewController:

-(void)goToApp { 

    appViewController *AppsViewController = [[appViewController alloc] initWithNibName:@"appViewController" bundle:nil]; 

    [[self navController] pushViewController:AppsViewController animated:YES]; 

    [AppsViewController release]; 

} 

goToApp выполнена, но appViewController не запущен.

ответ

0

Вы не должны создавать новый UINavigationController в viewController1. Вы должны пройти через собственность navigationController. Это свойство вернет UINavigationController, у которого есть UIViewController в его стеке (если есть, поэтому он может быть равен нулю).

UINavigationController * theInstance = self.navigationController; 
[theInstance goToApp]; 

См.: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html Недвижимость navigationController.

Кроме того, это лучшее соглашение, чтобы правильно называть ваши указатели тем, что они представляют. Я бы предложил переименовать theInstance в currentNavigationController или просто navigationController.

+0

Извините, но не понял. Я не создаю новый контроллер навигации в viewController1. viewController1 вызывает функцию, реализованную в navigationViewController (главный навигационный контроллер). Эта функция должна вызывать appViewController, как я нажал ранее viewController1. – Jaume

+0

Извините, я вас неправильно понял. Похоже, вы сделали сложную конструкцию с несколькими возможными ошибками. О 'navigationViewController * theInstance', имеет ли он представление, в котором он должен вызывать новый' UIViewController'? Я думаю, что мой предыдущий ответ по-прежнему выполняется в том смысле, что вы создаете новый 'UINavigationController' вместо повторного использования. В 'viewController1' вы получаете новый (и тем самым другой)' UINavigationController', то есть тот, который нажал 'viewController1'. – Roemer

+0

Работая, действительно предлагайте свою помощь! – Jaume

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