UINavigationController заголовок не отображается? - PullRequest
20 голосов
/ 11 января 2010

У меня нормальный UIViewController, в который я добавил UINavigationControllerDelegate, я добавлено как следующее в willappear? но это не сработало?

    [self.navigationController setNavigationBarHidden:NO animated:YES];
    self.navigationController.navigationItem.title = @"hai";

Ответы [ 6 ]

44 голосов
/ 11 января 2010

Вы должны установить заголовок в контроллере вида, который вы добавляете в контроллер навигации.

т.е. в контроллере добавления представления

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"My Title";
}

или прямой доступ к массиву ваших контроллеров представления

        AddFriendViewController *addFriendsView = [[AddFriendViewController alloc] initWithNibName:@"AddFriendViewController" bundle:nil];
        [self.navigationController pushViewController:addFriendsView animated:YES];
        [[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
        [addFriendsView release];
16 голосов
/ 11 января 2010

Каждый контроллер представления имеет элемент навигации. Вы изменяете элемент навигации контроллера навигации ... но это никогда не будет видно, если контроллер навигации не был внутри другого контроллера навигации! Вместо

self.navigationController.navigationItem.title = @"hai";

хочешь

self.navigationItem.title = @"hai";

или, если заголовок вашего элемента навигации равен nil, контроллер навигации будет использовать заголовок вашего контроллера вида:

self.title = @"hai";

Вы должны просто установить заголовок представления, который используется как панелями навигации, так и панелями вкладок, если вы по какой-то причине не хотите указывать разные заголовки для каждого из них.

1 голос
/ 10 сентября 2014

В моем случае заголовок не был виден на iOS6, когда я настраивал его по методу init:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        self.title = LS(@"Favorites");
        self.tabBarItem.title = LS(@"Favorites");
        self.tabBarItem.image = [UIImage imageNamed:@"star"];
    }

    return self;
}

Итак, его следует переместить оттуда к ViewDidLoad.

0 голосов
/ 23 мая 2013

Возможно, вам потребуется установить панель навигации на «Черная панель навигации с приглашением» на вкладке «Атрибуты» контроллера. Вот что сработало для меня.

0 голосов
/ 23 ноября 2010

Если в стек не было помещено ни одного viewcontroller, т.е. вы отображаете viewcontroller в верхней части стека (иногда называемый rootViewController), вы можете сделать это с помощью

[rootViewController setTitle:@"Title"];

Обратите внимание, что вы должны использовать setTitle - rootViewController.title = @ "Title" обычно не будет работать.

На самом деле, вы можете сделать это с любым viewcontroller, даже если он еще не является viewDidLoad. Если он создан программно, просто создайте его с помощью

myViewController *mvc=[[myViewController alloc] initWithNibName:@"nameofnibwithout.xib" bundle:nil];

Или вы можете объявить его как объект в делегате приложения, сделать его IBOutlet, создать UIViewController и установить его класс в myViewController, а также подключить его к IBOutlet, чтобы он не был нулевым.

0 голосов
/ 11 января 2010

Вы уверены, что self.navigationController.navigationItem не является nil, когда вы устанавливаете его заголовок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...