UIBarButtonItem изменение заголовка не работает

Как я могу изменить заголовок UIBarButtonItem? У меня есть следующий код, который вызывается при нажатии кнопки« изменить »на моем UINavigationBar .

-(void)editButtonSelected:(id)sender {
    NSLog(@"edit button selected!");
    if(editing) {
        NSLog(@"notediting");
        [super setEditing:NO animated:NO];
        [tableView setEditing:NO animated:NO];
        [tableView reloadData];
        [rightButtonItem setTitle:@"Edit"];
        [rightButtonItem setStyle:UIBarButtonItemStylePlain];
        editing = false;
    }
    else {
        NSLog(@"editing");
        [super setEditing:YES animated:YES];
        [tableView setEditing:YES animated:YES];
        [tableView reloadData];
        [rightButtonItem setTitle:@"Done"];
        [rightButtonItem setStyle:UIBarButtonItemStyleDone];
        editing = true;
    }
}

"Редактировать" кнопка меняет цвет (поэтому линия, задающая стиль, работает), однако строка, задающая заголовок кнопки, не работает.

24
задан CodeGuy 27 May 2011 в 22:08
поделиться

3 ответа

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

8
ответ дан 28 November 2019 в 22:22
поделиться

У меня была эта проблема, и я решил ее, установив стиль UIBarButtonItem в пользовательский тип при его инициализации. Затем заголовки будут устанавливаться при изменении значений заголовков.

Вы также можете установить значение возможное название в методе viewDidLoad, чтобы гарантировать правильный размер кнопки для всех возможных названий, которые она может иметь.

24
ответ дан 28 November 2019 в 22:22
поделиться

Попробуйте:

UIButton *rightButton;
rightButton = (UIButton*)self.navigationItem.rightBarButtonItem.customView;
[rightButton setTitle:@"Done" forState:UIControlStateNormal];

Потому что rightBarButtonItem.customView == “the button your added”.

-1
ответ дан 28 November 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: