2009-08-15 16 views
1

Ich habe ein Problem mit dem folgenden Code aufweist:Problem eine RootViewController zu UINavigationController Hinzufügen

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
self.myController = aController; 
myController.title = @"List"; 

[aController release]; 


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController]; 
self.rootNavController = bController; 

[bController release]; 

[self.view addSubview:rootNavController.view]; 

Wenn ich mein Programm laufen bekomme ich das Problem, dass für MyController meiner Ansicht entlang der y-Achse wiederholt wird, den ganzen Weg bis zum unteren Bildschirmrand. Wenn ich myController.view zur Stammansicht hinzufüge, funktioniert es gut. Ich habe nur das Problem, wenn ich myController als rootViewController meines Navigation Controllers hinzufüge.

Vielen Dank im Voraus für jede Hilfe!

Antwort

1

Das Problem war, dass ich nicht setzen den Rahmen angegeben haben. Ohne Angabe eines Frames mit CGRectMake füllte der View-Controller nur den gesamten Bereich aus.

Die Linie war ich so etwas benötigt:

rootNavController.view.frame = CGRectMake(0, 0, 320, 431); 
1

Der Standardnavigationscontroller Projektvorlage definiert -applicationDidFinishLaunching auf diese Weise:

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after app launch  

    [window addSubview:[navigationController view]]; 
    [window makeKeyAndVisible]; 
} 

ich Sie Ihre nav-Controller mit alloc init sind Instanziieren realisieren, anstatt es aus dem XIB bekommen, aber es scheint, Sie sollten fügen Sie es dem Ansichtsbaum des Fensters hinzu.

Woher kommt der Code, von dem Sie anrufen?

+0

Ich füge die Navigationsansicht zu einer anderen Ansicht-Controller. Ich habe festgestellt, dass die Ansicht nicht wiederholt, sondern gestreckt wird, so dass sie von der Navigationsleiste zum unteren Bildschirmrand geht. Glauben Sie, dass der Nav-Controller die Rahmenmaße ändert? –

0

Try this:

MyViewController *aController = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil]; 
self.myController = aController; 
[aController release]; 


UINavigationController *bController = [[UINavigationController alloc] initWithRootViewController:myController]; 
self.rootNavController = bController; 
[bController release]; 

[window addSubview:rootNavController.view];//<--What are you adding the navigationController to??? Another ViewController? TabController? or Window? 

Dann in der - (void) viewDidLoad Methode von MyViewController können Sie

self.navigationItem.title = @"List"; 
+0

Ich füge es zu einem View-Controller hinzu. –

Verwandte Themen