Ändern NavigationBar Titel (schriftart und Farbe) in verschiedenen View-Controllern
War ich versucht, das Aussehen der Navigationsleiste Titel in meiner app.
Ich hatte zum erstellen einer Benutzerdefinierten Navigation-Controller (nicht nur für dieses Problem), so dass ich dachte, das überschreiben der Funktion setTitle wie diese
- (void)setTitle:(NSString *)title
{
NSLog(@"SETTING TITLE %@", title);
[super setTitle:title];
UILabel *titleView = (UILabel *)self.navigationBar.topItem.titleView;
NSLog(@"title view is %@", titleView);
if (!titleView) {
titleView = [[UILabel alloc] initWithFrame:CGRectZero];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont fontWithName:@"TradeGothicLTStd-Bold-Accent-Accent" size:20];
titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleView.textColor = [UIColor whiteColor];
self.navigationBar.topItem.titleView = titleView;
[titleView release];
}
titleView.text = [title uppercaseString];
[titleView sizeToFit];
self.navigationBar.tintColor= [UIColor colorWithRed:130.0f/255.0f green:120.0f/255.0f blue:90.0f/255.0f alpha:1.0f];
}
War alles wie erwartet funktioniert.
Jetzt das Problem, dass sich im inneren ein navigation-controller ich habe ein TableView. Wenn Sie auf eine Zelle, die app führt einen Drilldown auf einen anderen TableView, das dürfte wieder die eigenen Titel.
dies ist der code für die didSelectRowAtIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSString *category_id = [[managedObject valueForKey:@"category_id"] stringValue];
NSString *name = [[[managedObject valueForKey:@"name"] description] capitalizedString];
CategoryViewController *category = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil];
category.category_id = category_id;
category.name = name;
category.managedObjectContext = self.managedObjectContext;
//...
//Pass the selected object to the new view controller.
[self.navigationController pushViewController:category animated:YES];
[category release];
}
....aber wenn die ausgewählte Ansicht wird angezeigt, es zeigt, mit den standard-schriftart.
BEARBEITEN
Ich bemerkte, dass, wenn in der zweiten Ansicht, die ich den Titel in der Methode viewDidAppear, es passiert etwas anderes.
wenn ich Schreibe,
- (void)viewDidAppear:(BOOL)animated
{
self.navigationController.title = name;
[super viewDidAppear:animated];
}
...der Titel in der navigation-bar hat das Recht (custom font), aber der Titel ist wie erscheinen nur, wenn der view fertig zu schieben....?
Wieder bin ich offensichtlich etwas falsch hier, jede Hilfe wäre sehr geschätzt 🙂
Thx für deine Zeit!
InformationsquelleAutor Sr.Richie | 2011-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code-snippet
Wird ändern Sie die Farbe der navigation bar der ganzen app.
Legen Sie ihn einfach in Appdelegate ist didFinishLauncing Methode.
InformationsquelleAutor Desert Rose
Seit iOS 5 können Sie dies direkt mit UINavigationBar
https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationBar_Class/Reference/UINavigationBar.html
Anpassen der Darstellung einer Navigationsleiste
Nur die
titleTextAttributes
WörterbuchAlso sehen Sie in diesem Beitrag stackoverflow.com/questions/599405/... 🙂
Vielen Dank nochmal, ich sah diese post, Sie finden können, dass ich tatsächlich kommentiert, eine Antwort und ein Teil der code, den ich hier schrieb, ist von da 🙂 Was wirklich verwirrt mich ist, dass Erik B. sagte mir, "Sie sollte es in allen view-Controller, wo Sie brauchen, um die Farbe des Titels." Aber warum den code in meiner navigation benutzerdefinierte Klasse wird nicht ausgelöst, richtig? Ich bin ein Objective-C-noob 🙁
InformationsquelleAutor Mathieu Hausherr
Für iOS7 und später die Lösung ist diese:
fügen Sie diesen code in der AppDelegate (didFinishLaunching:) - Methode, und alles sollte gut funktionieren.
InformationsquelleAutor vyudi
Statt, in
viewDidAppear
- Methode, tun Sie bitte, dass inviewDidLoad
Methode.InformationsquelleAutor Ilanchezhian