Как изменить текст на кнопке "Назад"
По умолчанию кнопка "Назад" использует в качестве текста на ней заголовок диспетчера представлений.
Могу ли я изменить текст на задней кнопке без изменения заголовка контроллера?
Мне нужно это, потому что у меня есть контроллер представления, название которого слишком длинное для отображения, и в этом случае я бы хотел отобразить только "Назад" в качестве заголовка для кнопки "Назад" .
Я пробовал следующее, которое не срабатывало:
self.navigationItem.leftBarButtonItem.title = @"Back";
Спасибо.
Ответы
Ответ 1
Пытаться
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Я обнаружил это, просмотрев документы backBarButtonItem в документах Apple для UINavigationItem.
Ответ 2
Подход Marc W работал отлично, как только я понял, какой контроллер применить к нему: тот, который переименован, а не тот, что сверху. Итак, если это стек навигации:
(bottom) ControllerA -> ControllerB (top)
... и вы хотите дать более короткий заголовок для ControllerA в задней кнопке, отображаемой, когда ControllerB находится сверху, вы применяете изменение свойства к ControllerA.
Значит, это больше в контексте self.title
, не похоже на других установщиках кнопок влево/вправо.
Ответ 3
Вы можете сделать это в раскадровке. Найдите контроллер вида, к которому вы хотите вернуться (тот, у которого есть длинный заголовок), выберите его пункт "Навигация" и откройте "Инспектор атрибутов" (Alt + Cmd + 4), вставьте название пользовательской кнопки "Назад".
![enter image description here]()
Ответ 4
Спасибо Марко... это помогло мне...
Вот что я сделал.
Если вы используете tableView для перехода к различным представлениям... поместите код:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
В вашем методе didSelectRowAtIndexPath
... первого контроллера... Контроллер А.
Когда вы перейдете к контроллеру B, кнопка будет иметь название "Назад".
Ответ 5
Кнопка "Назад" выводит текст из заголовка родительского контроллера представления.
В контроллере родительского представления (контроллер отображения, который появляется при нажатии кнопки "Назад" ), установите его собственный заголовок как нужный текст на задней панели.
Например, допустим, что мы имеем класс 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"
;
Ответ 6
Эта работа для меня лучше. Попробуйте:
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
Ответ 7
Если вы используете раскадровку:
- Open StoryBoard
- В окне "Структура документа" найдите ViewController, для которого вы хотите
вернуться к
- Щелкните элемент навигации этого ViewController
- В изменении проводника атрибутов значение кнопки Back для вашей пользовательской плитки
То есть, наслаждайтесь...
Ответ 8
И в MonoTouch следующие работы (в ViewDidLoad родительского контроллера):
NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
Ответ 9
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];
Это сработало для меня.
Ответ 10
В контроллере родительского представления установите обратную кнопку при загрузке изображений:
- (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.
Надеюсь, это поможет!
Ответ 11
У меня тоже был такой же вопрос. К сожалению, многие решения для SO не помогли мне, поэтому я разработал решение самостоятельно. Пожалуйста, обратитесь к моему решению: fooobar.com/questions/65105/.... Надеюсь, это тоже поможет другим.: -)
Ответ 12
[self.navigationController.navigationBar.backItem setTitle:@"back"];
Это работает для меня. Вы можете заменить "назад" на что-то еще.
Ответ 13
Это работало для меня, если вы не хотите иметь титул!
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
Ответ 14
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
Ответ 15
Наконец я понял, почему эти ответы не сработали для меня сначала. Я установил заголовок в раскадровке. Когда я устанавливаю заголовок в коде. он работает!
self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
Ответ 16
Мое решение состояло в том, чтобы установить заголовок, когда контроллер представления переместится в стек навигации и reset его с помощью метода делегата до того, как нажал 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";
}
Ответ 17
Если вы хотите не только изменить текст кнопки "Назад" и оставить исходную форму стрелки влево, но и сделать что-то, когда пользователь нажимает кнопку "Назад", я рекомендую вам посмотреть вокруг моего " CustomNavigationController".
Ответ 18
Вы можете использовать это (в viewController, который показывает кнопку возврата)
UINavigationController *nvc = self.navigationController;
NSInteger currentViewControllerIndex = [nvc.viewControllers indexOfObject:self];
if (currentViewControllerIndex > 0) {
UIViewController *previousViewController = self.navigationController.viewControllers[currentViewControllerIndex - 1];
previousViewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:backButtonTitle style:UIBarButtonItemStylePlain target:nil action:nil];
}
В быстром
if let currentViewControllerIndex = self.navigationController?.viewControllers.indexOf(self) where currentViewControllerIndex > 0,
let previousViewController = self.navigationController?.viewControllers[currentViewControllerIndex - 1] {
previousViewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: backButtonTitle, style: .Plain, target: nil, action: nil)
}
Ответ 19
Чтобы изменить название кнопки "Назад", см. Код ниже
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'
Ответ 20
//Это можно сделать, установив заголовок на предыдущем контроллере представления, как показано ниже.
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"
}
Ответ 21
Это сработало для меня:
self.navigationController.navigationBar.topItem.title = "Back"