Статические методы не являются методами экземпляра. Нет никакого контекста экземпляра, поэтому для реализации его от интерфейса имеет мало смысла.
Используя переменные target и action, для которых вы в данный момент оставляете значение «nil», вы должны иметь возможность подключать свои диалоговые окна сохранения, чтобы они вызывались, когда кнопка «выбрана». Осторожно, это может сработать в странные моменты.
Я в основном согласен с Amagrammer, но не думаю, что будет так сложно сделать кнопку со стрелкой на заказ. Я бы просто переименовал кнопку «Назад», сделал снимок экрана, фотошоп с нужным размером кнопки и сделал бы это изображение в верхней части кнопки.
Я не верю, что это возможно, легко. Я считаю, что единственный способ обойти это - создать собственное изображение стрелки кнопки «Назад» и разместить его там. Поначалу это меня расстраивало, но я понимаю, почему, ради последовательности, это было опущено.
Вы можете приблизиться (без стрелки), создав обычную кнопку и скрыв кнопку возврата по умолчанию:
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Servers" style:UIBarButtonItemStyleDone target:nil action:nil] autorelease];
self.navigationItem.hidesBackButton = YES;
В отличие от Амаграммера, это возможно. Вы должны создать подкласс своего navigationController
. Я объяснил все здесь (включая пример кода).
Вы можете попробовать получить доступ к элементу правой кнопки NavigationBars и установить его свойство селектора ... вот ссылка Ссылка на UIBarButtonItem , еще одна вещь, если эта проделанная работа, которая будет работать, будет , установите для элемента правой кнопки панели навигации пользовательский элемент UIBarButtonItem, который вы создаете, и установите его селектор ... надеюсь, это поможет
Сделать напрямую невозможно. Есть пара альтернатив:
UIBarButtonItem
, который проверяется при нажатии и всплывает, если тест пройден. UITextField
, например -textFieldShouldReturn:
, который вызывается после нажатия кнопки Return
или Done
на клавиатуре Обратной стороной первого варианта является то, что Стиль кнопки «Назад» с левой стрелкой недоступен с помощью настраиваемой кнопки панели. Поэтому вам нужно использовать изображение или кнопку обычного стиля.
Второй вариант хорош, потому что вы получаете текстовое поле обратно в методе делегата, поэтому вы можете настроить логику проверки на конкретное текстовое поле, отправленное методу обратного вызова делегата.
Эта техника позволяет изменить текст кнопки "назад", не затрагивая заголовок ни одного из контроллеров представления и не наблюдая изменения текста кнопки "назад" во время анимации.
Добавьте это в метод init в вызывающем контроллере представления:
UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"Back";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;
[temporaryBarButtonItem release];
Попробуйте поместить это в контроллер представления, где вы хотите обнаруживать нажатие:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// back button was pressed. We know this is true because self is no longer
// in the navigation stack.
}
[super viewWillDisappear:animated];
}