Frage

Ich habe ein seltsames Problem mit einer UINavigationController zu meiner iPhone-Anwendung hinzufügen. Ich fügen Sie den Controller wie folgt:

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];

myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController];

UIView *finalView = myeNavigationViewController.view;

[self.view addSubview:finalView];

Alles scheint zu funktionieren wie geplant, außer ich einen seltsamen weißen Raum an der Spitze meiner Ansicht zwischen der Statusleiste und der UINavigationController Titelleiste erhalten. alt text http://www.andrewskinner.name/problem.png

Ich habe Online gesucht, aber nicht wirklich wissen, was zu suchen. Hat jemand dieses Problem gehabt? Können Sie mir in Richtung etwas Hilfe zeigen?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Überprüfen Sie die Antworten auf diese Frage aus:

nicht sicher, warum UIView wird stupste um rund 10px

Andere Tipps

Was bedeutet die Zeile

UIView *finalView = myeNavigationViewController.view;

, um den Code hinzufügen? Es ist überflüssig, da man die Ansicht hinzufügen kann direkt, ohne es zu einem UIView ersten Zuordnung - und es ist falsch, da es die myNavigationController verweist und nicht Navigation ..
Ich neige dazu, dies zu tun

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];    
myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController];
[navigationController.view setFrame: [self.view bounds]];
navigationController.delegate = self;
[self.view addSubview:[navigationController view]];

Einstellen des Rahmens auf die Grenzen beseitigt auch den weißen Raum an der Spitze Sie fragen.

Das Problem ist, dass UINavigationController sollte idealerweise die direkte Subview UIWindow sein. Es wird die Position und Größe rechts von selbst aus. Wenn Sie UINavigationController in einer anderen benutzerdefinierten Ansicht eines UIWindow Subview hinzufügen kann, müssen Sie kümmern sich um die Position und Größe von benutzerdefinierter Ansicht nehmen, indem unter Berücksichtigung, ob die Statusleiste in der UIWindow gezeigt oder nicht.

Mein Vorschlag ist, die benutzerdefinierte Ansicht als Unterklasse von UINavigationController zu machen:

mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ];

[myUIWindow addSubview:nav.view];

und innerhalb des mySubClass_NavigationController, können Sie alle Anpassungen vornehmen, die Sie jetzt in Ihrem Selbst tun (was immer das Controller).

ich damit zu kämpfen für eine Weile zu verwenden sehr ähnlichen Code zum op und auch einen weißen Balken über meinem Navigationscontroller hatte.

Mein Problem trat auf, wenn die UINavigationController als Ansicht in einem UITabController hinzufügen. Der Raum in meinem Fall wurde verursacht durch den UINavigationBar Teil der UINavigationController die Statusleiste berücksichtigt und es wurde tatsächlich Teil der Ansicht überlappt, die ich in den UINavigationController zu zeigen versuche.

Dies ist der Code, den ich mit in Loadview in einer meiner UITabBarController View-Controller endete.

SomeUITableViewController *screenList = [[SomeUITableViewController alloc] init];

UINavigationController *navController = [[UINavigationController alloc]
                                         initWithRootViewController:screenList];

CGRect frame = [[navController navigationBar] frame];

frame.origin.y = 0; // Was 20, set to 0 to not take into account the status bar.

[[navController navigationBar] setFrame:frame];

[self setView:[navController view]];

Es gibt einige weitere Informationen unter http://discussions.apple.com/message.jspa ? messageID = 7890362 .

Es ist ein obskures Objekt in IB genannt "Blendet Bottom Bar auf Push". Probier es mal. Es löste das Problem für mich.

Vielleicht haben Sie irgendwie selbst zwei UIViews bekommen, jeweils mit einer Statusleiste. Überprüfen Sie die xib.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top