Добавление элемента панели к левому навигационному элементу

Я следую этому учебному пособию по добавлению навигации боковой панели к приложению.

В данном исходном коде они предустановили раскладки раскадровки. Один из них - это вид, который имеет "элемент навигации" и "элемент кнопки бара", который отображается слева от верхней панели навигации.

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

Я заметил, что в примере, представленном в уроке, он предоставляет эту опцию leftBarButton для опции:

enter image description here

И когда я проверяю мой, это выглядит так:

enter image description here

Нет контроллера навигации из-за того, как работает SWRevealView. Когда я запускаю приложение, я могу видеть кнопку, и она работает отлично, только проблема - это с правой стороны. Я сравнил свое мнение с примером и не могу найти никакой разницы.

Любая помощь приветствуется.

ИЗМЕНИТЬ Это может помочь. В раскадровках это выглядит так:

enter image description here

И это то, что мой выглядит как

enter image description here

Ответ 1

Перетащите элемент BarButtonItem и поместите левую сторону в свой навигационный элемент.

Ответ 2

Я не мог найти способ управлять этим в раскадровке. Поэтому я закодировал его в моей функции viewDirectLoad viewcontroller, добавив следующий код

self.navigationItem.leftBarButtonItem = _sidebarButton;
self.navigationItem.rightBarButtonItem = nil;

Ответ 3

1/. Щелкните правой кнопкой мыши на Storyboard > Open as > Source Code

2/. Найдите свой контроллер просмотра Ctrl + F : <name of View Controller>

3/. Найти navigationItem > Вы увидите barButtonItem следующим образом:

<navigationItem key="navigationItem" title="Title" id="n9s-Cu-Dtc">
   <barButtonItem key="rightBarButtonItem" title="Item" image="menu-icon-2.png" id="aN6-4T-o4T"/>
</navigationItem>

4/. Измените key="rightBarButtonItem" на key="leftBarButtonItem"

Сохранить и закончить. Щелкните правой кнопкой мыши на Storyboard > Open as > Builder Interface

Ответ 4

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

В конце концов я обнаружил, что если я сначала щелкнул по контроллеру навигационного представления, появилась панель навигации на главном контроллере. Я разместил элемент панели кнопок на панели навигации, но затем удалил его (просто нужно было временно включить изображения в панели навигации). Затем я смог перетащить изображение меню, которое я создал из своих Images.xcassets, на панель навигации контроллера Main view, чтобы создать правильный элемент панели кнопок. Вам просто нужно выбрать значок медиа-библиотеки в правой части раздела "Утилиты", чтобы найти изображения и использовать их. Затем просто установите sidebarButton Referencing Outlet в соответствующий файл myviewcontroller.h. Вы можете сделать это быстро, выбрав изображение меню на своих навигационных барах, удерживая клавишу управления, а затем перетащив его в свойство sidebarButton в связанном файле viewcontroller.h с помощью режима разделенного экрана помощника.

На других контроллерах представления в моем приложении (аналогично контроллерам видения "Фото и карта" ) мне просто нужно было настроить контроллеры представлений на панель "Прозрачная панель навигации" для их верхней панели в разделе атрибутов "Контроллеры представлений" (в раскадровке Утилиты). Затем на них появились идентичные навигационные бары от главного контроллера. Я также должен был сделать их аналогичным образом создавать элементы меню кнопки меню, а также установить боковую панель для ссылок в свой файл *.h. Ю можно сделать это быстро, выбрав изображение меню на своих навигационных барах, затем выбрав знак реферирования (+) и перетащив его на значок желтого круга контроллера режима просмотра, удерживая клавишу ctrl.

Не уверен, что я пропустил что-то в инструкциях, но это сработало для меня.

Ответ 5

Вы также можете добавить кнопки левой стороны по коду:

NSMutableArray *leftBtns = [[NSMutableArray alloc] init];

UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"LeftButton"] style:UIBarButtonItemStylePlain target:self action:@selector(leftButtonPressed)];
[leftBtns addObject:leftBtn];

[self.navigationItem setLeftBarButtonItems:leftBtns animated:NO];

//метод

-(void)leftButtonPressed
{
    NSLog(@"Left Button Tapped");
}

Ответ 6

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];

    [button setImage:[[UIImage imageNamed:@"BtnBack"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
    [button.imageView setTintColor:[UIColor whiteColor]];
    [button addTarget:self action:@selector(buttonClicked:)
     forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]
                                   initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = buttonItem;

Ответ 7

Я решил это, перетащив панель навигации с vc1 на vc2 в контур документа. Панель навигации теперь доступна в табло для сброса навигационных барбэктонитов.