4 Stimmen

iPad SplitView ändert die Farbe der Hauptnavigationsleiste

Seltsames Problem: Nachdem ich meine App ins Hochformat gedreht, das Toolbar-Element ausgewählt und den uipopovercontroller exponiert habe, ändert der UINavigationController auf der rechten Seite (objectAtIndex:0 der SplitView) die Farbe der Navigationsleiste, wenn ich zurück ins Querformat drehe. Ich bin mir nicht sicher, warum. Ich habe es in Interface Builder auf barStyle = UIBarStyleBlackOpaque eingestellt;

Nach der Rückkehr ins Querformat wird es silbern.

Dies geschieht nur, wenn ich es auf Hochformat drehen, erstellen Sie die Popover, und wählen Sie etwas in der Navigation-Controller, die eine andere tableViewController schiebt. Auch die Einstellung der Eigenschaften in der viewDidLoad-Methode bewirkt nichts.

Hat jemand eine Idee?

1voto

Steve Punkte 572

Ich habe das gleiche Problem, aber das Zurücksetzen der barStyle in viewWillAppear verursacht ein anderes Problem. Die Einstellung dort setzt es auch, wenn es im Popover angezeigt wird, so dass es nicht mehr mit der Popover-Farbe übereinstimmt. Wie kann ich die barStyle zu setzen, was ich will nur, wenn es im linken Fenster des Split View Controller angezeigt wird? Ich schätze, ich könnte es in Ansicht wird nur angezeigt, wenn die Ausrichtung Querformat ist, aber das scheint schmutzig. Auch die Einstellung in splitViewController:willShowViewController:invalidatingBarButtonItem: funktioniert überhaupt nicht, da ich denke, dass dies aufgerufen wird, bevor der Split-View-Controller die Stile zurück auf Standard setzt. Das scheint ein wirklich dummer Fehler von Apple zu sein. Es sollte es zurück zu dem Stil ändern, die es ursprünglich war, nicht die Standard ein.

1voto

Kapil Kumar Punkte 104

Dieses Problem ist behoben mit folgendem Code

@implementation ChangeNavigationBarColor

- (void) setTintColor:(UIColor*)color
{
    [super setTintColor:[[BrandingManager sharedBrandingManager] tintColorForNavigationController]];
}

@interface ChangeNavigationBarColor : UINavigationBar {

}

@end

1voto

Max the Racoon Punkte 11

Ich habe vor Wochen einen Fehlerbericht eingereicht und Apple sagte, dass dies ein bekannter Fehler von 4.2 ist. Ich habe dann gefragt, ob es eine Möglichkeit gibt, dieses Problem zu beheben, aber bis jetzt habe ich keine Antwort erhalten.

Es ist auch nicht sinnvoll, die UINavigationbar durch eine unterklassige/angepasste Navigationsleiste zu ersetzen. Das Popover scheint einige geheime böse Sachen auf der UINavigatioBar, die die tintColor tötet und wird nicht zulassen, um es zurückzusetzen (es wird immer bleiben 'nil', auch nach dem Zurücksetzen es) durchführen.

Ich habe im Grunde aufgegeben und dem Kunden gesagt, dass er damit leben muss, bis das nächste Update herauskommt (hoffentlich).

0voto

user944329 Punkte 11

Sie können eine separate Klasse zum Ändern der Farbe verwenden, machen Sie die Hintergrundfarbe, die Klasse, Ihre gewünschte Farbe, und verwenden Sie dann diese Klasse als Klasse Ihrer rootViewController. Ich habe es getan, es funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X