2010-01-20 3 views
2

Я новичок в iPhone, и у меня проблемы с управлением UINavigation.iPhone uinavigation - переход со страниц

У меня 3 просмотра (главное меню, новости и логин). Главное меню - это мой базовый вид в корневом контроллере, а затем я нажимаю окна входа или новостей в стек, когда пользователь нажимает кнопку в главном меню. Однако, если я на экране новостей и хочу перейти в режим входа в систему, я ожидаю, что вы откроете текущее представление (вернет меня в главное меню) и нажмите вид входа. Однако, этого не происходит, и я не знаю, почему ...

Вот код из моего AppDelegate:

@synthesize window; 
@synthesize rootController; 


- (void)applicationDidFinishLaunching:(UIApplication *)application {  

// Override point for customization after application launch 
[window addSubview:rootController.view]; 
[window makeKeyAndVisible]; 
} 


- (IBAction)loadLoginView 
{ 
[self loadMainMenuView]; 
LoginViewController *loginView = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 
[rootController pushViewController:loginView animated:YES]; 
[loginView release]; 
} 

- (IBAction)loadNewsView 
{ 
[self loadMainMenuView]; 
NewsViewController *newsView = [[NewsViewController alloc] initWithNibName:@"NewsView" bundle:nil]; 
[rootController pushViewController:newsView animated:YES]; 
[newsView release]; 
} 

- (IBAction)loadMainMenuView 
{ 
[rootController popToRootViewControllerAnimated:YES]; 
} 

- (void)dealloc { 
[window release]; 
[rootController release]; 
[super dealloc]; 
} 

Может кто-нибудь увидеть, что я делаю неправильно? Есть ли лучший способ справиться с этим? Спасибо!

ответ

1

Выполнение двух анимированных изменений. Изменения в ControlController на контроллере навигации не работают должным образом (они не поставлены в очередь). Попробуйте следующее:

- (IBAction)loadNewsView { 
[self loadMainMenuView]; 
NewsViewController *newsView = [[NewsViewController alloc] initWithNibName:@"NewsView"  bundle:nil]; 
[rootController pushViewController:newsView animated:YES]; 
[newsView release]; 
} 

В качестве альтернативы вы можете слушать viewDidAppear в корневой ViewController в navigationController и только подтолкнет новый ViewController раз корень снова появился. Вероятно, вам понадобится использовать BOOL, чтобы не всегда присутствовать в редакторе новостей, когда появился корень. Надеюсь, это имеет смысл.

+0

Спасибо Felix, Я попытался удалить анимацию с кода popallviews, и это сработало ... Однако затем я остался без эффекта перехода. Теперь я пытаюсь проверить, могу ли я сделать это без NavigationController и просто управлять представлениями вручную. Еще раз спасибо! –

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