Как изменить текст на кнопке "Назад"

По умолчанию кнопка "Назад" использует в качестве текста на ней заголовок диспетчера представлений. Могу ли я изменить текст на задней кнопке без изменения заголовка контроллера? Мне нужно это, потому что у меня есть контроллер представления, название которого слишком длинное для отображения, и в этом случае я бы хотел отобразить только "Назад" в качестве заголовка для кнопки "Назад" .

Я пробовал следующее, которое не срабатывало:

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"