2012-09-03 24 views
6

Jestem nowy iPhone,zmiana RootviewController do kontrolera nawigacji

Chcę zmienić mój Rootviewcontroller do mojej nowej klasy i uczynić go do kontrolera nawigacji.

Tu jest mój urywek kodu,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  


    UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
    [self.window addSubview:navigationController.view]; 

    [self.window makeKeyAndVisible]; 


    return YES; 
} 

jestem coraz SIGABRT mówi 'adding a root view controller <NewClass: 0x6a8dd50> as a child of view controller:

Odpowiedz

12

Ilekroć u chcą, aby ustawić:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; 
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
self.window.rootViewController =nil; 
self.window.rootViewController = navigationController; 
[self.window makeKeyAndVisible]; 

EDIT: Bezpośrednio używać AppDelegateinstance ustawić rootViewController dla UIWindow jak wykazałem powyżej.

+0

sam proble m występuje nawet po napisaniu tego .. – Krunal

+0

sprawdź edytowaną odpowiedź –

+0

Dzięki za odpowiedź zapisałem moje ostatnie 4 godziny pracy –

2

Zamiast:

[self.window addSubview:navigationController.view]; 

zrobić navigationControllerrootViewController z window:

self.window.rootViewController = navigationController; 

Czy jest to również detailViewController typu UINavigationController? Nie można ustawić jako root dla innego obiektu UINavigationController.

+0

sam problem występuje nawet po napisaniu tego. – Krunal

1

Wystarczy dodać ten wiersz,

RootViewController *defaultViewController=[[RootViewController alloc]initWithNibName:@"NAME_OF_XIB" bundle:nil];

przed inicjalizacji UINavigationController, w

RootViewController *defaultViewController=[[RootViewController alloc]initWithNibName:@"NAME_OF_XIB" bundle:nil]; 
UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:detailViewController]; 
[self.window addSubview:navigationController.view]; 

[self.window makeKeyAndVisible]; 
return YES; 
+0

daj mi znać, jeśli to działa – channi

0

Zmień RootViewController do NavigationController ..

UINavigationController *navigationController=[[UINavigationController alloc] initWithRootViewController:self.detailViewController];