Ответ 1
Просто измените текст на leftBarButtonItem?
self.navigationItem.leftBarButtonItem.title = @"Back"; // or whatever text you want
В UITableView
я настраиваю self.navigationItem.leftBarButtonItem
кнопкой. Теперь я хочу перезагрузить эту кнопку, чтобы обновить текст на этой кнопке, но на Navigation bar
. Я могу обновить UITableView
на
[self.tableView reloadData]
но как обновить панель навигации?
Обновление: я НЕ запускаю заголовок кнопки, но перезагружаю его. Поэтому любой код инициализации (например, self.navigationItem.leftBarButtonItem.title = @"balabala"
) не работает, потому что он НЕ вступает в силу немедленно.
Просто измените текст на leftBarButtonItem?
self.navigationItem.leftBarButtonItem.title = @"Back"; // or whatever text you want
Попробуйте это
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc]
initWithTitle:@"Title"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(OnClick:)];
self.navigationItem.leftBarButtonItem = btnBack;
Надеюсь, это поможет вам.
ИЗМЕНИТЬ: -
UIBarButtonItem *btnBack = [[UIBarButtonItem alloc] initWithTitle: @"Title" style: UIBarButtonItemStyleBordered target:self action:@selector(OnClick:)];
[[self navigationItem] setBackBarButtonItem: btnBack];
Попробуйте следующее:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
initWithTitle:@"your_title"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(backBtnPressed:)];
self.navigationItem.leftBarButtonItem = backButton;
Вы пытались установить текст, используя
self.navigationItem.leftBarButtonItem.title
Вам нужно использовать следующую инструкцию:
self.navigationItem setLeftBarButtonItem:cancelButton animated:YES];
Другими словами, вам нужно сообщение setLeftBarButtonItem: анимированное вместо стандартного. Это приведет к перезагрузке текста кнопки с помощью анимации. То же самое относится к кнопке "Назад", если это то, что вас интересует в какой-то момент.
@interface Myviewcontroller : UIViewController
{
UIBarButtonItem *barBtnBack;
UIButton *btnQuestion;
}
//ViewdidLoad
btnQuestion = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 20, 25)];
[btnQuestion setBackgroundImage:[UIImage imageNamed:@"question-mark2x"] forState:UIControlStateNormal];
[btnQuestion addTarget:self action:@selector(goBacktomain)
forControlEvents:UIControlEventTouchUpInside];
barBtnBack =[[UIBarButtonItem alloc] initWithCustomView:btnQuestion];
[self.navigationItem setLeftBarButtonItem:barBtnBack];
note- изменить заголовок btnQuestion, когда вы хотите изменить заголовок кнопки навигации.
Если вы хотите изменить заголовок NavigationBar, попробуйте 1 из них:
[self.navigationController.navigationItem setTitle:@"Title"];
[self.navigationItem setTitle:@"Title"];
[self setTitle:@"Title"];
Если вы хотите изменить названия кнопок, поместите их в один класс:
- (void)setLeftBarButtonTitle:(NSString *)title action:(SEL)selector
{
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:title style:UIBarButtonItemStyleBordered target:self action:selector];
[self.navigationItem setLeftBarButtonItem:leftButton];
}
- (void)setRightBarButtonTitle:(NSString *)title action:(SEL)selector
{
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:title style:UIBarButtonItemStyleBordered target:self action:selector];
[self.navigationItem setRightBarButtonItem:rightButton];
}
Примеры установки названия и действий кнопок:
// Change button titles and actions any time
[self setLeftBarButtonTitle:@"Back" action:@selector(goBack)];
[self setRightBarButtonTitle:@"Something" action:@selector(doSomething:)];
// Change button titles with no actions
[self setLeftBarButtonTitle:@"Nothing" action:nil];
[self setRightBarButtonTitle:@"Nothing" action:nil];
// Remove buttons from navigation bar
[self.navigationItem setLeftBarButtonItem:nil];
[self.navigationItem setRightBarButtonItem:nil];