Подтвердить что ты не робот

Как изменить текст кнопки возврата uinavigationbar назад

В настоящее время я пытаюсь изменить текст кнопки back subview, который загружен касанием таблицы. Однако даже с тем, как я пытаюсь его реализовать, он по-прежнему показывает заголовок родителей в обратной кнопке.

Я пытаюсь загрузить новое значение в обратную кнопку внутри метода viewdidload, например

UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] init];
myBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = myBarButtonItem;
[myBarButtonItem release];

однако его не работает.

4b9b3361

Ответ 1

Вам нужно изменить self.navigationItem.backBarButtonItem на предыдущий вид, а не на текущий вид (я знаю, это немного нелогично). Например, в представлении таблицы вы можете сделать следующее:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setTitle:@"My title"];
    UIBarButtonItem *boton = [[UIBarButtonItem alloc] initWithTitle:@"Custom back button text" style:UIBarButtonItemStyleBordered target:self action:@selector(mySelector:)];
    self.navigationItem.backBarButtonItem  = boton;
    [boton release];
}

Ответ 2

Здесь документация не так понятна, пока вы не прочитали и не перечитали и не поиграли с каждым параметром.
Чтобы изменить заголовок кнопки возврата по умолчанию, добавьте эту строку в viewDidLoad()

self.navigationController.navigationBar.topItem.title = @"Your Label";

Если вы хотите, чтобы кнопка была невидимой, установите значение @"" пустую строку.

Ответ 3

Хорошо, понял, я разместил этот код в родительских представлениях tableView: didSelectRowAtIndexPath: method. это то, как мой взгляд выглядит с несколькими таблицами, которые пользователь может выбрать. Надеюсь, это поможет.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Navigation logic may go here. Create and push another view controller.
    if (indexPath.section == 0) { //--- picks (first) section

     ChildViewController *childViewController = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:childViewController animated:YES];
    //--- this sets the back button to "Back" every time you load the child view.
     self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease];

        if(indexPath.row == 0) { //--- picks row
            childViewController.title = @"Bike";
        }
        if(indexPath.row == 1) {
            childViewController.title = @"Model";
        }
        [vehicleSearchResponseTableViewController release];
    }


}

Ответ 4

Лучший способ с помощью Xcode 5 изменить имя кнопки возврата - отредактировать поле Back Button в IB элемента навигации на контроллере представления, на который вернется кнопка возврата. Например, если у вас есть список TableViewController, который переходит на подробный экран, измените кнопку "Назад" в элементе "TableViewController Navigation" в списке (в IB), чтобы изменить имя кнопки "Назад", отображаемое на экране подробностей.

Ответ 5

Это не будет работать так, как вы пытаетесь сделать. Кнопка навигации всегда будет иметь заголовок предыдущего вида. Что вы можете сделать - изменить название первого вида перед тем, как нажать новый. Это единственное, что я мог найти, чтобы решить ту же проблему.

Ответ 6

Теперь ваш код выглядит хорошо.

Выполняется ли этот код перед

[super viewDidLoad];

(неверно) или после него (хорошо)?

Ответ 7

После просмотраDidLoad

self.navigationController!.navigationBar.backItem?.title= "Назад"

Ответ 8

Мое предложение состояло в том, чтобы добавить отдельный ярлык для заголовка страницы родителей. Работала хорошо для меня.

let titleLabel = UILabel(frame: CGRect(x: (view.frame.width * (3/8)), y: 0, width: (view.frame.width * 0.25 ), height:30))
        titleLabel.text = "Title"
        titleLabel.textAlignment = .center
        titleLabel.textColor = UIColor.white
        titleLabel.font = UIFont.systemFont(ofSize: 20)
        navigationItem.titleView = titleLabel 

Ответ 9

Эта статья должна делать то, что вы хотите.

От автора:

Как вы можете видеть выше, все, что вам нужно сделать, это установить элемент leftBarButtonItem контроллера, и он скроет кнопку "Назад". Селектор handleBack теперь обрабатывает обратное событие, и вам нужно вручную выставить контроллер вида из стека UINavigationControllers. Вы можете реализовать любой свой собственный код, даже блокируя выход из страницы.

Ответ 10

Хороший способ сделать это - установить заголовок кнопки "Назад" в родительском контроллере представления, прежде чем вызывать дочерний элемент следующим образом:

[self.navigationItem.backBarButtonItem setTitle:@"Your Custom Title"];

Этот заголовок будет помещен в кнопку "Назад" в дочернем представлении. Важным моментом здесь является то, что этот заголовок используется в дочернем представлении как кнопка "Назад" для родительского представления.