2012-09-03 15 views
6

Ich bin neu auf iPhone,Änderung RootViewController to Navigation Controller

Ich möchte meine Rootviewcontroller auf meine neue Klasse ändern und es zur Navigation Controller machen.

Hier ist mein Code-Schnipsel,

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


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

    [self.window makeKeyAndVisible]; 


    return YES; 
} 

ich SIGABRT sagt 'adding a root view controller <NewClass: 0x6a8dd50> as a child of view controller:

Antwort

12

Immer wenn u setzen wollen:

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: Direkt verwenden AppDelegateinstancerootViewController für UIWindow zu setzen, wie ich oben gezeigt haben.

+0

gleiches Problem m geschieht auch nach dem Schreiben dieser .. – Krunal

+0

Überprüfen Sie die bearbeitete Antwort –

+0

Danke für die Antwort gespeichert meine letzten 4 Stunden der Arbeit –

2

Statt sich am:

[self.window addSubview:navigationController.view]; 

machen navigationController die rootViewController von window:

self.window.rootViewController = navigationController; 

Ist auch detailViewController vom Typ UINavigationController? Sie können UINavigationController nicht als Root auf ein anderes UINavigationController Objekt festlegen.

+0

gleiche Problem auch auftreten, das nach dem Schreiben. – Krunal

1

Fügen Sie einfach diese Zeile,

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

vor UINavigationController der Initialisierung

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

lassen Sie mich wissen, ob das funktioniert – channi

0
Ihre RootViewController zu Navigation .. Ändern

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