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

Как перезагрузить навигационную панель

В UITableView я настраиваю self.navigationItem.leftBarButtonItem кнопкой. Теперь я хочу перезагрузить эту кнопку, чтобы обновить текст на этой кнопке, но на Navigation bar. Я могу обновить UITableView на

 [self.tableView reloadData]

но как обновить панель навигации?

Обновление: я НЕ запускаю заголовок кнопки, но перезагружаю его. Поэтому любой код инициализации (например, self.navigationItem.leftBarButtonItem.title = @"balabala") не работает, потому что он НЕ вступает в силу немедленно.

4b9b3361

Ответ 1

Просто измените текст на leftBarButtonItem?

self.navigationItem.leftBarButtonItem.title = @"Back"; // or whatever text you want

Ответ 2

Попробуйте это

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];

Ответ 3

Попробуйте следующее:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"your_title"
                                   style:UIBarButtonItemStyleBordered
                                   target:self
                                   action:@selector(backBtnPressed:)];
    self.navigationItem.leftBarButtonItem = backButton;

Ответ 4

Вы пытались установить текст, используя

self.navigationItem.leftBarButtonItem.title

Ответ 5

Вам нужно использовать следующую инструкцию:

self.navigationItem setLeftBarButtonItem:cancelButton animated:YES];  

Другими словами, вам нужно сообщение setLeftBarButtonItem: анимированное вместо стандартного. Это приведет к перезагрузке текста кнопки с помощью анимации. То же самое относится к кнопке "Назад", если это то, что вас интересует в какой-то момент.

Ответ 6

 @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, когда вы хотите изменить заголовок кнопки навигации.

Ответ 7

Если вы хотите изменить заголовок 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];