/ / UINавигационен контролер Push and Pop - iphone, контролер, uinavigation

UINвигационен контролер Push и Pop - iphone, контролер, uinavigation

Трябва да изскоча към HomeScreenViewController от текущия контролер на изглед, след като кликнете върху персонализиран бутон за връщане, който се добавя в главния прозорец като светлинна кутия. Използвах следния код:

HomeScreenViewController *homeController = [[HomeScreenViewController alloc]
initWithNibName:@"HomeScreenViewController" bundle:nil];
[self.navigationController popToViewController:homeController animated:YES];
[homeController release];

Получих катастрофа с изключение: Tried to pop to a view controller that doesn"t exist.

Как може да се приложи? Какви промени са необходими за прилагането му?

Отговори:

8 за отговор № 1

Ясно създавате нов екземпляр от HomeScreenViewController което не съществува в навигационния стек. Ще трябва да вземете съществуващия екземпляр и да го използвате като аргумент за popToViewController:animated: метод. Можете да го направите, като вземете контролера за изглед от viewControllers масив, който е собственост на UINavigationController, Те се индексират по ред, така че ако контролерът на изглед е в индекс 1, тогава използвайте контролера за изглед

UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1];
[self.navigationController popToViewController:viewController animated:YES];

Ако искате да се върнете към контролера на root view, използвайте popToRootViewControllerAnimated: вместо.


1 за отговор № 2

Опитайте този приятел

[self.navigationController popToRootViewControllerAnimated:YES/NO];

0 за отговор № 3

Също така не забравяйте за този код във вашия AppDelegate (.m):

navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];

self.navigationController = navigationController;
self.window.rootViewController = self.navigationController;

[self.window makeKeyAndVisible];

и в AppDelegate (.h)

@property (strong, nonatomic) UINavigationController *navigationController;

Понякога може да е проблем, когато персонализирате много неща в приложението си.