Mam projekt z kontrolerem NavigationController, który zawiera w IB pierwszy ViewController do wyświetlenia. To po prostu domyślny wzór podczas tworzenia projektu.iPhone - Zastępowanie widoku root w kontrolerze nawigacyjnym
W tym pierwszym widoku kontroler, otrzymuję pewne zdarzenie, które wysyłam do appDelegate, i chcę, aby zastąpił ten widok root innym. Nie zamierzam przejść do następnego.
Więc robię:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// Add the navigation controller's view to the window and display.
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
return YES;
}
- (void) goNext {
[self.navigationController popViewControllerAnimated:NO];
NextViewController* nextWindow = [[[NextViewController alloc] initWithNibName:@"NextView" bundle:nil] autorelease];
[self.navigationController pushViewController:nextWindow animated:NO];
}
Ale to nie działa, pierwszy viewcontroller nie poped. A druga jest logicznie wyświetlana za pomocą przycisku Wstecz.
Chcę tylko zastąpić ten pierwszy widok drugim jako początkiem procesu nawigacji.
Jeśli kontrolerem widoku u góry stosu jest kontroler widoku głównego, metoda 'popViewControllerAnimated:' nie wykonuje żadnych czynności. Innymi słowy, nie możesz wyrzucić ostatniego przedmiotu na stosie. Zamiast tego możesz wypróbować metodę 'setViewControllers: animated:'. – albertamg
Nie możesz po prostu zmienić swojego kontrolera rootview na NextViewController w Xib? – Deeps