Изменить название кнопки - PullRequest
2 голосов
/ 11 октября 2011

Мне нужно изменить значение заголовка по умолчанию для кнопки «Назад» в навигационном контроллере на другое.

Я пытаюсь сделать это с помощью следующего кода:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style:    UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.backBarButtonItem = newBackButton;
[newBackButton release];

я тоже пробовал:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style:    UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = newBackButton;
[newBackButton release];

Я использую этот код в конце viewDidLoad.

Я могу создать нормальную кнопку (квадрат) со следующим кодом:

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"Terug" style:    UIBarButtonItemStyleBordered target:nil action:nil];
self.navigationItem.leftBarButtonItem = newBackButton;
[newBackButton release];

Проблема с этим решением заключается в том, что мне нужно создать отдельный метод, который выдает контроллер вида. Еще одна проблема - форма кнопки, мне нужна кнопка в форме стрелки.

у вас есть идеи?

Ответы [ 3 ]

1 голос
/ 11 октября 2011

Если вы хотите иметь собственную кнопку возврата, вам нужно создать новую и назначить ей новый селектор.BackBarButtonItem не редактируется, поэтому вам нужно установить leftBarButtonItem.

Это то, как вы можете создать пользовательскую кнопку возврата

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:NSLocalizedString(@"Back", nil) forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];

[button addTarget:navigationController action:@selector(backAction:)forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button];
navigationController.navigationItem.leftBarButtonItem = backButton;
[backButton release];

И это селектор для имитации кнопки возврата

- (IBAction)backAction:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}
0 голосов
/ 04 апреля 2014

Вызовите эту кнопку из вашего метода 'viewDidLoad'.

- (void)addCustomBackButton {

    /*  enter your image name and size here  */
    UIImage  *backImage = [UIImage imageNamed:@"back_btn.png"];
    CGRect buttonRect = CGRectMake(5.0f, 0.0f, 12.0f, 20.0f);
    /*  enter your image name and size here  */

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];  // implemeent 'backAction' method in each VC
    [backButton setFrame:buttonRect];

    UIImageView *imageView = [[UIImageView alloc] initWithImage:backImage];
    [imageView setFrame:buttonRect];
    [backButton addSubview:imageView];

    UIBarButtonItem *homeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    self.navigationItem.leftBarButtonItem = homeButtonItem;
}

[Или сделайте его методом класса класса 'Utitlity' и вызовите его как метод класса в каждом необходимом viewContorller.]

Также не забудьте реализовать backAction, что-то вроде этого:

- (void)backAction
{
    [self.navigationController popViewControllerAnimated:YES];
}

Удачного кодирования!

0 голосов
/ 11 октября 2011

Существует простое решение.

Допустим, вы переходите от viewA к viewB непосредственно перед переходом от viewA к viewB. Измените заголовок viewA

, например:

-(void)moveToViewB
{

    // Add this line
    self.title = @"Terug"; 
    // and push the new view as normal 
    [self.navigationController pushViewController:viewB animated:NO];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...