Мое приложение содержит некоторые UIViewControllers
. Первая - это страница входа в систему, вторая - «Страница меню», а третья - viewController
.popToRootViewControllerAnimated заставляет мое приложение сбой
я поставил функцию выхода из системы на кнопках на каждой странице, с alertView, как это:
- (IBAction)logout:(id)sender {
UIAlertView *logoutConfirm = [[UIAlertView alloc] initWithTitle: @"Logout" message: @"Sure ? " delegate: self cancelButtonTitle: @"Ok" otherButtonTitles:@"Cancel", nil];
[logoutConfirm show];
}
// Logout
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
// Logs to track the bug
NSLog(@"LOG :%@", [self.navigationController viewControllers]);
NSLog(@" LOG 2 : %@", [self.navigationController.viewControllers objectAtIndex:0]);
if (buttonIndex == 0) {
[self.navigationController popToRootViewControllerAnimated:NO];
}
}
popToRootViewControllerAnimated
делает сбой приложения на третьем ViewController
, но не второе с этим сообщением:
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'adding a root view controller <MainViewController: 0xXXXXXX> as a child of view controller:<UINavigationController: 0xXXXXXX>'
Есть мои журналы:
2014-09-25 10:24:35.074 Poject[18594:654203] LOG :(
"<MainViewController: 0xXXXXXXX>",
"<secondViewController: 0xXXXXXXX>",
"<thirdViewController: 0xXXXXXXX>"
)
2014-09-25 10:24:35.075 Poject[18594:654203] LOG 2 : <MainViewController: 0xXXXXXXX>
Кажется, я добавляю в UIViewController
, но просто хотел вернуться к 1-й ViewController ... Я думаю, что это странно, если это работа на втором ViewController, но не третий ...
UPDATE
@mehul патель сказал мне, чтобы прокомментировать эту строку в моей AppDelegate.h:
[self.window addSubview:self.navigationController.view];
Потому что:
Вы не можете добавить вас г RootViewController, как подвид в окно, он будет врезаться в любом случае
Но теперь, pushViewController на кнопку «Вход» в моем firstViewController больше не работает. Он ничего не делает, поэтому я NSLog контроллерах массив моего navigationController
Первый раз я получил:
2014-09-25 16:48:07.512 Project[22023:780717] (
"<MainViewController: 0xf81f290>"
)
Второй раз я получил:
2014-09-25 16:48:12.104 Project[22023:780717] (
"<MainViewController: 0xf81f290>",
"<MenuSelectionViewController: 0xd929030>"
)
Но вид не меняется. ..
Благодарим за помощь!
вы используете pushViewController: всегда правильно? – Fattie
@JoeBlow Да, я: [self.navigationController pushViewController: myViewController animated: YES]; – Ritooon
@Ritooon: попробуйте вызвать popToRootViewControllerAnimated с задержкой. что может помочь. – Deepak