Элемент кнопки панели навигации отсутствует после стиля перехода Заменить

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

  • В Storyboard, Master View Controller созданы статические ячейки для табличного представления и добавлены 3 разные строки (т.е. ячейка 1, ячейка 2, ячейка 3)
  • Добавил View Controller, выделил его и прикрепил к нему Navigation Controller (Editor -> Embed In -> Navigation Controller)
  • Из ячейки 1 в Master View я сделал Ctrl-щелчок по Navigation Controller.
  • Выберите Segue Style «Заменить» и Destination «Разделить детали».
  • В tableView:didSelectRowAtIndexPath добавлено [self PerformSegueWithIdentifier:@"NewViewController" sender:self] для выполнения перехода.

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

Но на панели навигации нет элемента кнопки панели Master.

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

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

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


person Vinny    schedule 16.01.2013    source источник
comment
Что вы пробовали?   -  person Jules    schedule 16.01.2013
comment
@Jules Это был мой первый вопрос о SO. Надеюсь, вопросы, которые я буду задавать в будущем, будут более ясными :)   -  person Vinny    schedule 16.01.2013
comment
В приведенной ниже ссылке хорошо описана проблема, и я смог полностью понять, почему элемент панели навигации отсутствовал при использовании раскадровок. Ознакомьтесь с ответом oneMhz ‹raywenderlich.com/forums/viewtopic.php?f=2&t=1546  -  person Vinny    schedule 17.01.2013
comment
Очень интересную ссылку вы показали. Я скоро им воспользуюсь. Спасибо.   -  person Vinny    schedule 18.01.2013
comment
Не то чтобы это имело большое значение при этом удалении, @JulesMazur, но как JSFiddle может помочь кому-либо продемонстрировать свой код iOS?   -  person Sixten Otto    schedule 17.12.2014
comment
@ Винни, если у вас есть решение, ответьте на вопрос и выберите свой собственный ответ.   -  person ggrana    schedule 12.05.2015
comment
@ggrana Я не думаю, что в данный момент смогу предоставить рабочий образец из-за нехватки времени. Тем не менее, я постараюсь в ближайшее время найти решение. В ссылке, которую я отправил, есть пример проекта. Это помогло?   -  person Vinny    schedule 13.05.2015


Ответы (1)


Попробуйте изменить Segue Style с Replace на Push. Это должно решить вашу проблему.

Когда вы нажимаете UIViewController на UINavigationController, он будет добавлен в стек, и вы сможете вернуться назад:

Стек вашего навигационного контроллера до нажатия кнопки "Подробнее":

Master

Ваш навигационный контроллер после нажатия на детали и дополнительной навигации...:

Master -> Detail (Navigation button is displayed) -> Some other details (Navigation button is displayed) -> And maybe some more (Navigation button is displayed)

Когда вы вызываете новый переход, используя Replace, как вы это делали, Master будет заменено на Detail, и вы не сможете вернуться назад, потому что мастер был заменен и его больше нет в стеке.

Стек вашего навигационного контроллера до нажатия кнопки "Подробнее":

Master

Ваш навигационный контроллер после нажатия на детали с помощью замены, как вы это делали:

Detail (no navigation button because master was replaced and we don't have nothing more on the stack)
person FormigaNinja    schedule 17.06.2015