Несмотря на то, что это «явно ложно», то, что вы говорите «кажется верой», на самом деле является правильным. Документация Mozilla для window.close говорит
Этот метод разрешен только для окон, открытых скриптом с использованием метода window.open. Если окно не было открыто сценарием, в консоли JavaScript появляется следующая ошибка: скрипты могут не закрывать окна, которые не были открыты скриптом
. Вы говорите, что оно «должно оставаться сделайте это », но я не думаю, что вы найдете какую-либо ссылку, которая поддерживает это, может быть, вы что-то забыли?
Вы не можете просто изменить заголовок кнопки "Назад" в корневом контроллере представления, потому что корневой контроллер представления не отображает кнопку "Назад". Это - корень, в конце концов, к чему можно вернуться? В то время как могло бы быть что-то логическое в Вашем приложении, нет ничего очевидного, которое должна сделать реализация по умолчанию.
можно поместить, пользовательская кнопка там вместо Вас действительно хотят, хотят управление там (сделайте UIBarButtonItem и установите navigationItem.backBarButtonItem на него), хотя это не будет иметь того же появления как один из по умолчанию (это будет квадрат, в противоположность стрелке).
Я имел успех путем создания моего собственного UIBarButtonItem вместо того, чтобы установить заголовок существующего:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
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...
Возможно, уже ответил, но не просто.
self.navigationItem.backBarButtonItem
по умолчанию равен нулю. Итак, если вы установите для него заголовок, ничего не произойдет, потому что это влияет на адресный объект nil
. Это не приведет к ошибке, поскольку objective-c разрешает обмен сообщениями с объектами nil
.
ОТВЕТ: Вы должны создать свой собственный объект кнопки, чтобы задать его заголовок. Вы можете initWithTitle
или создать его, а затем установить заголовок.
PS - как уже упоминалось, backBarButtonItem
влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem
.
initWithTitle
или создать его, а затем установить заголовок.
PS - как уже упоминалось, backBarButtonItem
влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem
.
initWithTitle
или создать его, а затем установить заголовок.
PS - как уже упоминалось, backBarButtonItem
влияет только на его дочерние представления, которые помещаются поверх него в навигации стек. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem
.
leftBarButtonItem
. В зависимости от того, как вы спроектировали свое приложение, корневое представление больше не может открываться и не может иметь кнопки возврата. Однако вы можете повлиять на leftBarButtonItem
. Это лучшее решение для этого. Не устанавливайте заголовок элемента навигации как обычно. 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 автоматически будет "Назад"
Кнопка "Назад" берет свой текст из заголовка родительского контроллера представления.
В родительском контроллере представления (контроллер представления, который появляется при нажатии кнопки "Назад") установите его собственный заголовок в качестве желаемого текста на кнопке "Назад".
Например, допустим, у нас есть класс 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];
Если вы хотите, чтобы ваша кнопка "Назад" читалась как "Назад", установите заголовок родительского контроллера представления в @"Назад"
;