Изменение заголовка UIBackButtonItem

Несмотря на то, что это «явно ложно», то, что вы говорите «кажется верой», на самом деле является правильным. Документация Mozilla для window.close говорит

Этот метод разрешен только для окон, открытых скриптом с использованием метода window.open. Если окно не было открыто сценарием, в консоли JavaScript появляется следующая ошибка: скрипты могут не закрывать окна, которые не были открыты скриптом

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

29
задан Chris Hanson 31 January 2009 в 06:02
поделиться

6 ответов

Вы не можете просто изменить заголовок кнопки "Назад" в корневом контроллере представления, потому что корневой контроллер представления не отображает кнопку "Назад". Это - корень, в конце концов, к чему можно вернуться? В то время как могло бы быть что-то логическое в Вашем приложении, нет ничего очевидного, которое должна сделать реализация по умолчанию.

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

1
ответ дан Louis Gerbarg 31 January 2009 в 16:02
поделиться
  • 1
    я забыл, вводят его здесь иначе, его fine.i просто касается правильного подхода для хранения строковых констант. – Maddy.Shik 5 December 2009 в 18:22

Я имел успех путем создания моего собственного UIBarButtonItem вместо того, чтобы установить заголовок существующего:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
52
ответ дан Chris Lundie 31 January 2009 в 16:02
поделиться
  • 1
    Я действительно задаюсь вопросом, использовали ли Вы когда-либо одноразовый дополнительный метод как это в реальном коде? (there' s никакой сарказм, предназначенный в том вопросе). Интересно знать, что это могло быть сделано. – BillW 5 December 2009 в 19:16

Your problem is probably very similar to the one described here: http://blog.tmro.net/2009/05/uitabbarbuttonitem-did-not-change-its.html

Try to debug to see if there are any _barButtonItemFlags set for your button...

0
ответ дан 27 November 2019 в 22:58
поделиться

Возможно, уже ответил, но не просто.

self.navigationItem.backBarButtonItem по умолчанию равен нулю. Итак, если вы установите для него заголовок, ничего не произойдет, потому что это влияет на адресный объект nil . Это не приведет к ошибке, поскольку objective-c разрешает обмен сообщениями с объектами nil .

ОТВЕТ: Вы должны создать свой собственный объект кнопки, чтобы задать его заголовок. Вы можете initWithTitle или создать его, а затем установить заголовок.

PS - как уже упоминалось, backBarButtonItem влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem .

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

PS - как уже упоминалось, backBarButtonItem влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem .

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

PS - как уже упоминалось, backBarButtonItem влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem .

В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Хотя вы можете повлиять на leftBarButtonItem .

В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem .

25
ответ дан 27 November 2019 в 22:58
поделиться

Это лучшее решение для этого. Не устанавливайте заголовок элемента навигации как обычно. self.navigationitem.title. Поместите этот код в родительский вид didload

    CGRect frame = CGRectMake(0, 0, 320, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];

self.navigationItem.titleView = label;
label.text = @"My Navigation Bar";

. Установив заголовок, как указано выше, фактический заголовок навигации будет равен нулю, поэтому заголовок кнопки backbarbutton автоматически будет "Назад"

-1
ответ дан 27 November 2019 в 22:58
поделиться

Кнопка "Назад" берет свой текст из заголовка родительского контроллера представления.

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

Например, допустим, у нас есть класс RootViewController. Когда мы щелкаем на ячейке в его табличном представлении, мы нажимаем на экземпляр SecondViewController. Мы хотим, чтобы кнопка "Назад" экземпляра SecondViewController гласила "Home."

в методе viewDidLoad класса RootViewController. m:

self.title = @"Home";

в методе viewDidLoad метода SecondViewController.m:

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

Если вы хотите, чтобы ваша кнопка "Назад" читалась как "Назад", установите заголовок родительского контроллера представления в @"Назад";

5
ответ дан 27 November 2019 в 22:58
поделиться
Другие вопросы по тегам:

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