iPhone uinavigation - прыгать со страниц - PullRequest
2 голосов
/ 20 января 2010

Я новичок в кодировании 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 Ответ

1 голос
/ 20 января 2010

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

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

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

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