По умолчанию кнопка «Назад» использует в качестве текста заголовок контроллера просмотра. Могу ли я изменить текст на кнопке «Назад» без изменения заголовка контроллера представления? Мне это нужно, потому что у меня есть контроллер представления, заголовок которого слишком длинный для отображения, и в этом случае я хотел бы отображать только «Назад» в качестве заголовка для кнопки возврата.
Я пробовал следующее, что не сработало:
self.navigationItem.leftBarButtonItem.title = @"Back";
Спасибо.
ios
iphone
cocoa-touch
uinavigationitem
Илья Суздальницкий
источник
источник
Ответы:
Пытаться
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Я обнаружил это, просмотрев документы backBarButtonItem в документации Apple для UINavigationItem .
источник
Подход Marc W отлично сработал, когда я понял, к какому контроллеру применить его: тот, который меняет название, а не тот, который находится сверху. Итак, если это стек навигации:
(bottom) ControllerA -> ControllerB (top)
... и вы хотите дать более короткий заголовок для ControllerA в кнопке возврата, отображаемой, когда ControllerB находится сверху , вы применяете изменение свойства к ControllerA .
Так что это больше в контексте
self.title
, а не в отличие от других установщиков левой / правой кнопок панели.источник
Вы можете сделать это в раскадровке. Найдите контроллер представления, к которому вы хотите вернуться (тот, который имеет длинный заголовок), выберите его элемент навигации и откройте инспектор атрибутов (Alt + Cmd + 4), вставьте настраиваемый заголовок кнопки «Назад».
источник
Спасибо, Марко ... это помогло мне ...
Вот что я сделал.
Если вы используете tableView для перехода к разным представлениям ... введите код:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
В твоем
didSelectRowAtIndexPath
методе ... первого контроллера ... контроллера A.Когда вы переходите к контроллеру B, кнопка будет иметь название «Назад».
источник
Кнопка возврата извлекает свой текст из заголовка родительского контроллера представления.
В родительском контроллере представления (контроллер представления, который появляется при нажатии кнопки «Назад») установите собственный заголовок в качестве желаемого текста на кнопке «Назад».
Например, допустим, у нас есть
RootViewController
класс. Когда мы щелкаем ячейку в ее табличном представлении, мы нажимаем экземплярSecondViewController
. Нам нужна кнопка возвратаSecondViewController
экземпляра читалась как «Домой».в
viewDidLoad
методе RootViewController.m :self.title = @"Home";
в
viewDidLoad
методе SecondViewController.m :UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton; [backButton release];
Если вы хотите, чтобы ваша кнопка «Назад» читалась как «Назад», установите заголовок родительского контроллера представления на
@"Back"
;источник
Это работает лучше для меня. Пытаться :
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
источник
Если вы используете раскадровку:
Вот и все, наслаждайтесь ...
источник
А в MonoTouch работает (в ViewDidLoad родительского контроллера):
NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
источник
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];
Это сработало для меня.
источник
В родительском контроллере представления установите кнопку возврата при загрузке представления:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStylePlain target:nil action:nil]; }
Обратите внимание, что нам не нужно включать
autorelease
в конце последнюю версию iOS.Надеюсь это поможет!
источник
[self.navigationController.navigationBar.backItem setTitle:@"back"];
Меня устраивает. Вы можете заменить «спину» на что-нибудь другое.
источник
Этот сработал для меня, если вы не хотите иметь титул!
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
источник
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
источник
Я наконец понял, почему эти ответы не помогли мне сначала. Я установил заголовок в раскадровке. Когда я устанавливаю заголовок в коде. оно работает!
self.navigationItem.title = @"Main Menu"; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil]; [[self navigationItem] setBackBarButtonItem:backButton];
источник
Мое решение заключалось в том, чтобы установить заголовок, когда контроллер представления помещается в стек навигации, и сбросить его с помощью метода делегата до закрытия нажатого vc:
Поэтому я помещаю изменение заголовка в вызывающий контроллер представления, когда нажимаю другой контроллер представления, например:
self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"]; self.pushedVC.delegate = self; [self.navigationController pushViewController:self.pushedVC animated:YES]; self.title = @"Back";
и в функции обратного вызова делегата (которую я вызываю в viewWillDissapear):
-(void)pushedVCWillClose:(PushedVC *)sender { self.title = @"Previous Title"; }
источник
Если вы хотите не только изменить текст кнопки «Назад» и сохранить исходную форму стрелки влево, но и сделать что-то, когда пользователь нажимает кнопку «Назад», я рекомендую вам взглянуть на мой « CustomNavigationController ».
источник
// Вы можете добиться этого, установив заголовок в предыдущем контроллере представления, как показано ниже
override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) //Set Title for this view self.navigationItem.title = "My Title" } override func viewWillDisappear(animated: Bool) { super.viewWillAppear(animated) //Set Title for back button in next view self.navigationItem.title = "Back" }
источник
Чтобы изменить заголовок кнопки возврата, см. Код ниже
InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES]; //Below code changed back button title on InformationVC page. UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil]; self.navigationItem.backBarButtonItem = backBarButton;`enter code here`
источник
В Swift5 нельзя редактировать backBarButtom. Следовательно, нам нужно сначала скрыть backBarButtom, а затем использовать настраиваемый leftbarButtom для замены backBarButtom. Вот подробное решение: https://stackoverflow.com/a/63868300/13939003
источник
Это сработало для меня:
self.navigationController.navigationBar.topItem.title = "Back"
источник