2013-09-23 4 views
3

У меня возникла проблема, когда я нажимаю элементы на контроллер навигации, а кнопка «Назад» просто говорит «Назад». Я попытался установить точку останова и проверить элементы навигации в стеке. Все элементы в стеке имеют nil backButtonItem и заголовок. Я даже пробовал настройки backBarButtonItem, но я все еще получаю его, просто говоря «Назад». У кого-нибудь еще была эта проблема?iOS7 UINavigationItem назад название кнопки не работает

ответ

7

iOS 7 автоматически заменит название вашей задней кнопки на «Назад» или вообще удалит заголовок, чтобы соответствовать названию текущего элемента навигации. Вы, вероятно, не должны пытаться ничего с этим поделать, кроме, может быть, попробуйте сделать ваши заголовки короче.

+0

Спасибо, что была проблема. Это работает странно. Он заменит название под названием «The Trial» на «Back», но «Общие правила» не будут заменены. – user2807952

+1

Если вы считаете, что это не так, как должно быть, всегда полезно [сообщить об ошибке] (https://bugreport.apple.com/). –

+0

@ user2807952: Вы в итоге сообщили об ошибке? Я хотел бы отслеживать эту проблему. – benwad

0

Вам необходимо установить для каждого UIViewController 's title, что вам нужно, чтобы кнопка назад.

Относительно: View Controller Catalog article, что документирует это поведение.

0

В iOS 7. свойство заголовка элемента навигации предыдущего контроллера изменяет кнопку возврата в следующем контроллере. В принципе, заголовок кнопки «Назад» - это название предыдущей страницы.

Однако, если вы хотите другого названия для кнопки возврата, чем титул предыдущего контроллера, лучший вариантом является установка навигации пункта вида заголовка этого контроллера с UILabel. Затем вы можете установить свойство заголовка навигационного элемента этого контроллера на все, что должно отображаться на задней панели. Пример кода создания этикетки с правильным шрифтом и размером:

NSString * title = @"Title of page"; 
NSDictionary * titleAttribs = navigationController.navigationBar.titleTextAttributes; 
UILabel * titleLabel = [[UILabel alloc] init]; 
NSAttributedString * titleAttrString = [[NSAttributedString alloc] initWithString:title attributes:titleAttribs]; 

// the attributed text misses the bold attribute (because bold is not considered as font attribute in Cocoa) 
titleLabel.attributedText = titleAttrString; 

// get font and make it bold 
UIFont * font = titleLabel.font; 
UIFontDescriptor * fontDesc = [font.fontDescriptor 
           fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold]; 
UIFont * boldFont = [UIFont fontWithDescriptor:fontDesc size:0]; // size:0 means keep the size as is 
titleLabel.font = boldFont; 
[titleLabel sizeToFit]; 


anotherController.navigationItem.titleView = titleLabel; // this will be the title in NavBar 
anotherController.navigationItem.title = @"Go back"; // this will be the title of the back button 

[navigationController pushViewController:anotherController animated:YES]; 
Смежные вопросы