Элемент кнопки панели навигации, отсутствующий после стиля segue "Заменить",
iPad-приложение, над которым я работаю, использует раскадровки и segues. Я пытаюсь отобразить другой контроллер представления, когда пользователь нажимает на разные ячейки в главном представлении.
После обращения к различным учебным пособиям были предприняты следующие шаги:
- В
Storyboard
, Master View Controller
созданы статические ячейки для представления таблицы и добавлены 3 разных строки (т.е. ячейка 1, ячейка 2, ячейка 3)
- Добавил
View Controller
, выбрал его и привязал к нему Navigation Controller
(Editor
→ Embed In
→ Navigation Controller
)
- Из ячейки 1 в
Master View
я сделал ctrl-click на Navigation Controller
.
- Выберите
Segue Style
"Заменить" и Destination
"Подробное разделение"
- В tableView: didSelectRowAtIndexPath, добавлен [self performSegueWithIdentifier: @ "NewViewController" отправитель: self] для перехода.
Результат, который я вижу, - это замещение деталей.
Но на панели навигации нет элемента кнопки Master
.
Таким образом, я не могу нажать кнопку Master
, которая отобразит таблицу, содержащую ячейки, откуда я могу перейти к другому виду.
Я уже читал много блогов и видел комментарии, которые говорят о замене segue для подобных проблем. Однако никто не сталкивался с этой конкретной проблемой при использовании раскадровки и segues.
По моему пониманию использование segues должно помочь мне достичь того, чего я хочу. От тех, кто пробовал этот подход, любые указатели в правильном направлении будут полезны.
Ответы
Ответ 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)
Когда вы вызываете новый segue с помощью Replace
, как вы это делали, Master
будет заменен на Detail
, и вы не сможете вернуться назад, потому что Мастер был заменен, и он больше не находится в стеке.
Ваш стек контроллера навигации перед нажатием "Подробно":
Master
Ваш навигационный контроллер после нажатия на детали с помощью замены, как и вы:
Detail (no navigation button because master was replaced and we don't have nothing more on the stack)