2009-04-07 32 views
4

Ich arbeite mit der Xcode-Dienstprogramm-Vorlage. In RootViewController.m gibt es einen Abschnitt, der die navbar für aufstellt, was die FlipSideView genannt:Navib-Titel programmgesteuert ändern

(Schnipsel)

UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Title"]; 

(Snip)

Wie können Sie programmatisch die navbar Titel aus der Änderung FlipsideViewController-Klasse? Ich habe versucht:

self.navigationItem.title = @"XXXXXX"; 

ohne Erfolg.

Antwort

4

Wann rufen Sie diese Leitung an? Ich rufe die gleiche Linie in der ViewDidLoad Methode und es funktioniert gut.

Wie zeigen Sie Ihre Sicht? Hier ist, wie einer meiner Viewcontrollers (Tableview) präsentiert die andere (Detailansicht)

[self.navigationController pushViewController:detailController animated:YES]; 
+1

Ich habe versucht, beide in ViewDidLoad und ViewWillAppear. Keine Freude :( – Alan

+0

Haben Sie es irgendwie als IBOutlet eingerichtet? – Alan

+0

Überprüfen Sie die Bearbeitung, müssen Sie möglicherweise weitere Informationen zu Ihrer Frage hinzufügen. – Jab

0

Jesse Antwort sollte funktionieren, aber da Sie immer noch Schwierigkeiten haben, eine der ersten Stellen zu überprüfen, ist der Verweis auf die navigationItem .

Versuchen Sie, Ihre App mit einem Haltepunkt in dieser Zeile zu debuggen, und untersuchen Sie die Referenz. Höchstwahrscheinlich findet der Anruf nicht statt, weil die Referenz null ist.

0

Wenn Ihre Referenz Null ist, überprüfen Sie Ihre Verbindungen in IB.

0

IIRC, jede Unterklasse von UIViewController hat eine Eigenschaft 'title', die den Text enthält, der im Titel der Navigationsleiste angezeigt wird. Daher sollte die Einstellung self.title = @"Foobar"; in -viewDidLoad oder in -viewWillAppear: animiert: sollte den Trick tun.

8

OK, ich habe etwas Zeit damit verbracht, weil ich den Komfort des NIB-Layouts für die Utility-Template-App nutzen möchte, aber ich möchte in der Lage sein, ohne eine Vielzahl von Federn zu internationalisieren.

Also, das erste, was auf die FlipViewController Klasse hinzuzufügen:

IBOutlet UINavigationBar *navBarItself;

Dann in IB zu steuern, ziehen Sie in der Navigationsleiste, um die Datei Besitzer, und eine Verbindung zu navBarItself in der Eigentümer der Datei

Dann wird der Code:

- (void) viewWillAppear:(BOOL) animated { 

    [super viewWillAppear:animated]; 

    navBarItself.topItem.title = @"Peace!!"; 
}

und dies scheint wie ein Zauber

(und es funktioniert auch, wenn zu ViewDidLoad hinzugefügt) zu arbeiten

(ps die anderen Antworten hier gezeigt haben funktioniert nicht für mich)

+0

Ja, es funktioniert, und noch besser wenn der Code in viewDidLoad verschoben wird! – ragnarius

0

Sie können den Titel des FlipSideViewController festlegen, um den Titel im Navigationscontroller zu setzen, während der FlipSideViewController das zu ist pViewController.In FlipSideViewController:

self.title = "Flip Side"; 

ich bin nicht sicher, wie genau dieses Projekt angelegt, aber ich denke, das ist, was du redest.

Verwandte Themen