Подтвердить что ты не робот

Заголовок UINavigationController не отображается?

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

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

Ответ 1

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

то есть. в контроллере дополнительных представлений

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

или напрямую получить доступ к массиву ваших контроллеров view

        AddFriendViewController *addFriendsView = [[AddFriendViewController alloc] initWithNibName:@"AddFriendViewController" bundle:nil];
        [self.navigationController pushViewController:addFriendsView animated:YES];
        [[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
        [addFriendsView release];

Ответ 2

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

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

вы хотите

self.navigationItem.title = @"hai";

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

self.title = @"hai";

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

Ответ 3

В моем случае название не было видно на 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.

Ответ 4

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

Ответ 5

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

[rootViewController setTitle:@"Title"];

ЗАМЕЧАНИЕ, что вы должны использовать setTitle - rootViewController.title= @ "Название" обычно не работает.

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

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

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

Ответ 6

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