Заголовок UINavigationController не отображается?
У меня есть обычный UIViewController, в который я добавил UINavigationControllerDelegate, i
добавлено в следующем виде, но это не сработало?
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationItem.title = @"hai";
Ответы
Ответ 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
Вам может потребоваться настроить панель навигации "Черная панель навигации с запросом" на вкладке "Атрибуты" на контроллере. Это то, что сработало для меня.