Ä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

Schreibe einen Kommentar