Нарисовать пользовательскую кнопку «Назад» на панели навигации iPhone

У меня есть UIView с панелью навигации, и я хотел бы добавить кнопку, которая выглядит в стиле кнопки «Назад». Я не использую UINavigationController, и мне было интересно, можно ли это сделать без него?

Стиль кнопки должен выглядеть так: alt text

Спасибо


person ingh.am    schedule 23.11.2010    source источник
comment
@casperOne Помимо того, что вы закрыли вопрос почти через 2 года после ответа, почему вы закрыли его? Принятый ответ в stackoverflow.com/questions/227078 предлагает использовать изображение, тогда как ответ Майка Веллера ниже гораздо элегантнее. Не говоря уже о том, что ответ здесь будет поддерживать более новые устройства (например, я не менял этот пример кода, когда дисплей Retina был запущен, и он все еще работает. Изображение будет отображаться с низким разрешением).   -  person ingh.am    schedule 18.02.2013


Ответы (2)


Вам необходимо создать собственный стек из UINavigationItem объектов и поместить их в UINavigationBar. Это единственный известный мне способ получить настоящую кнопку возврата. Я не тестировал этот код, но вы должны сделать что-то вроде этого:

UINavigationItem *previousItem =
    [[[UINavigationItem alloc] initWithTitle:@"Back title"] autorelease];

UINavigationItem *currentItem =
    [[[UINavigationItem alloc] initWithTitle:@"Main Title"] autorelease];

[navigationBar setItems:[NSArray arrayWithObjects:previousItem, currentItem, nil]
               animated:YES];

Чтобы обрабатывать нажатие кнопок, вы должны установить себя в качестве делегата панели навигации и реализовать делегаты UINavigationBarDelegate.

person Mike Weller    schedule 23.11.2010
comment
К вашему сведению: установка делегата NavigationBar, управляемого NavigationController, вызывает исключение: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Cannot manually set the delegate on a UINavigationBar managed by a controller.' - person stigi; 25.03.2013
comment
что такое currentItem? - person scientiffic; 29.08.2014

Вы также можете обновить это, изменив backBarButtonItem на предыдущем контроллере представления (не просматриваемом в данный момент).

person Greg Martin    schedule 23.11.2010
comment
Привет, я думаю, что ваш ответ может помочь мне в решении моей проблемы, пожалуйста, как использовать backBarButtonItem в моем коде, предполагая, что это мой код в предыдущем представлении: - (IBAction) goToRechercherView {rechercherViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [собственный PresentModalViewController: анимированный rechercherViewController: ДА]; } - person Malloc; 29.03.2011