1

Я использую панель навигации через свое приложение, хотя не контроллер с помощью контроллера навигации (добавленный в VC через Storyboard).Настройка кнопки повторного использования навигационной панели для левой кнопки

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

enter image description here Каков правильный способ реализации этой кнопки в соответствии со стандартной практикой? Я могу удалить bg кнопки для повторения, что не является проблемой, но как я могу выполнить следующее: 1. Внедрить изображение в пределах кнопки 2. Внесите эту кнопку через API внешнего вида, если это возможно, поэтому код не является клей-код и повторно использовать на всех VC, которые имеют это.

Если я не могу сделать по внешнему виду, что бы лучше всего было не включать этот код снова и снова в контроллеры, которые его используют?

В дополнение к этому, есть способ показать этот элемент кнопки в раскадровке и быть связанным в раскадровке/использовать, кроме визуально.

+0

Вы можете создать категорию для viewController и добавить navBarItem в navBar. Если вы не используете эту кнопку для навигации, каков ожидаемый результат кнопки? Является ли меню скользящим во всем баре? Вы можете использовать свойство изображения элемента bar для изображения. –

+0

Да, меню соскальзывает снизу. Это было бы одинаково для нескольких VC. Будет ли я использовать свойство изображения, а не растягивать изображение, просто используйте это как целое изображение? Это не для ВСЕХ контроллеров просмотра, но есть 7 или около того, которые будут использовать это, вы по-прежнему рекомендуете категорию? – StuartM

+0

@MarkM - есть ли у вас какая-либо другая информация о том, что нужно? как создать категорию и метод? – StuartM

ответ

1

А теперь, я пойду за тобой. В этом случае просто создайте собственный класс navBar и добавьте его в свой pch, затем используйте его там, где это необходимо, или создайте пользовательский подкласс UIViewController под названием «UIViewControllerWithNavBar», тогда вы можете использовать этот класс в качестве замены для класса UIViewController по умолчанию.

@interface SomeViewController : UIViewControllerWithNavBar 

Это позволит вам повторно использовать класс во всем приложении с добавленным navBar.

+1

Принимается как ответ, однако мой подход заключался в подклассе UINavigationBar и использовании awakeFromNib для отображения бара – StuartM

0

Я недавно написал сообщение в блоге об этой проблеме, но для rightBarButtonItem. Я не уверен, если функциональность «назад» требует щипок, но вот пост в блоге, если интересно: http://www.codebestowed.com/ios-shared-barbuttonitems/

Основная идея состоит в том, чтобы создать подкласс UINavigationController, придать ему свойство BarButtonItem (self.myButton в коде ниже) и добавить код, аналогичный:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.delegate = self; 
} 

- (void)navigationController:(UINavigationController *)navigationController 
    willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    if (!viewController.navigationItem.rightBarButtonItem) { 
     viewController.navigationItem.rightBarButtonItem = self.myButton; 
    } 
} 

сообщение в блоге подробно описано, как вы можете настроить это далее в InterfaceBuilder, что требует немного хака (слишком много, чтобы идти в в этом ответе).

Смежные вопросы