Muszę wyskoczyć do HomeScreenViewController z bieżącego kontrolera widoku po kliknięciu niestandardowego przycisku Wstecz, który jest dodawany w głównym oknie jako lightbox. Użyłem następującego kodu:
HomeScreenViewController *homeController = [[HomeScreenViewController alloc]
initWithNibName:@"HomeScreenViewController" bundle:nil];
[self.navigationController popToViewController:homeController animated:YES];
[homeController release];
Mam awarię z wyjątkiem: Tried to pop to a view controller that doesn"t exist.
Jak można to wdrożyć? Jakie zmiany są potrzebne do jego wdrożenia?
Odpowiedzi:
8 dla odpowiedzi № 1Najwyraźniej tworzysz nową instancję HomeScreenViewController
który nie istnieje na stosie nawigacyjnym. Będziesz musiał pobrać istniejącą instancję i użyć jej jako argumentu dla popToViewController:animated:
metoda. Możesz to zrobić, pobierając kontroler widoku z pliku viewControllers
tablica, która jest właściwością UINavigationController
. Są indeksowane w kolejności, więc jeśli kontroler widoku ma indeks 1, pobierz kontroler widoku za pomocą
UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1];
[self.navigationController popToViewController:viewController animated:YES];
Jeśli chcesz wrócić do głównego kontrolera widoku, użyj popToRootViewControllerAnimated:
zamiast.
1 dla odpowiedzi nr 2
Spróbuj tego przyjaciela
[self.navigationController popToRootViewControllerAnimated:YES/NO];
0 dla odpowiedzi № 3
Nie zapomnij także o tym kodzie w swoim AppDelegate (.m):
navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.navigationController = navigationController;
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
i w AppDelegate (.h)
@property (strong, nonatomic) UINavigationController *navigationController;
Czasami może to być problem podczas dostosowywania wielu rzeczy w aplikacji.