Как использовать Interface Builder для правильного управления UINavigationControllers?
-
21-08-2019 - |
Вопрос
Последние две недели я учился создавать приложения для iPhone.Я просмотрел достаточное количество контента и теперь пытаюсь создать модальное всплывающее окно с помощью PresentModalView.
Я могу успешно создать представление и сдвинуть его вверх, но я заметил, что модальные представления не предоставляют вам панель навигации по умолчанию в верхней части окна, что, я думаю, имеет смысл для гибкости.Большинство модальных представлений, которые я видел, имеют кнопку «Отмена» и «Готово» или «Сохранить» в качестве элементов навигации на том, что выглядит как UINavigationController.Моя мысль тогда заключалась в том, чтобы просто создать экземпляр навигационного контроллера и поместить одно представление в стек контроллера представления и представитьModalView:navController.view...
Поскольку представление относительно сложное, я пытался разместить и UINavigationController с кнопками панели, и представление, которое я надеялся поместить в стек, в одном xib - что бы я ни пытался, у меня не получается чтобы связи были правильными.Ты вообще можешь это сделать?Или мне следует создать отдельный класс/xib для представления, которое я собираюсь вставить в навигационный контроллер?Кажется, что на одном экране много классов и файлов, поэтому у меня такое ощущение, что я что-то упускаю.
На данный момент я мог бы сделать это программно примерно полтора часа назад...однако это настоящая неприятность, поскольку в некоторых вещах IB кажется ОТЛИЧНЫМ.У кого-нибудь есть опыт такой ситуации?
Спасибо, Джош
Решение
Если вы не собираетесь использовать этот новый XIB для навигации, нет смысла создавать контроллер навигации.
В конструкторе интерфейсов просто перетащите UINavigationBar в верхнюю часть представления и добавьте кнопку «Готово».Теперь добавьте IBAction к кнопке «Готово», чтобы закрыть контроллер представления.Код ViewController для отклонения IBAction должен выглядеть примерно так:
-(IBAction)dismiss {
//Any logic before dismissing the modal view
[super dismissModalViewControllerAnimated:YES];
}