Должен ли я использовать Segue для навигации по контроллерам?
Многие учебники, книги по iOS для начинающих учат нас использовать Segue. Это хорошее начало. Но хорошо ли это для вас и ваших проектов? По моему опыту, это совсем не хорошо. Вот причины.
Раскадровка работает медленно, особенно вы добавляете много контроллеров в раскадровку, это катастрофа. Я написал кое-что о раскадровке здесь.
Когда у вас 4 или 5 контроллеров, да, не так уж и плохо. Когда у вас есть 10 контроллеров, и на экране А могут отображаться экраны B, C, D, на экране B могут отображаться D и E, на экране E могут отображаться A и C. Это большая головная боль.
Вы должны открывать раскадровки, перетаскивать сегменты много раз. Когда вы настраиваете другие переходы, вы должны установить modalPresentationStyle
опять таки.
В противном случае вы можете легко скопировать и вставить код.
let vc = DailyBonusController()
vc.modalPresentationStyle = .fullScreen
present(vc, animated: true)
Простой? Вы можете переключиться на любые контроллеры, которые хотите, вместо перетаскивания на контроллер, который находится на расстоянии 3 или 4 экрана от вашего текущего контроллера.
Идентификатор перехода представляет собой строку, и вы можете легко допустить опечатку. Если ваши экраны имеют много назначений, вам необходимо if … else выбрать назначение для обработки правильного потока.
Заметки:
Если вам нужно использовать Segue, попробуйте назвать идентификатор, например «Show» + your_controller_name. Таким образом, вам больше не нужно запоминать слишком много вещей и предотвращать опечатки.
Когда вы используете Segue, вы отправляете данные на следующий экран в prepareForSegue
.
Подумайте, в этом случае у вас есть UITableView или UICollectionView, при выборе строки/элемента отображается подробный экран. Вот как это работает.
использование следует:
- Сохраните выбранный IndexPath в локальной переменной.
- Перейти к
prepareForSegue
и перейдите к исправлению, если так. - Развернуть выбранный indexpath.
- Отправьте данные в пункт назначения.
Не используйте переход
В didSelectRow
или где-то, что вы хотите показать.
- Инициируйте пункт назначения
- Отправить данные
- Навигация.
И вы можете повторно использовать этот способ в других местах, просто скопируйте.
Просто некоторые причины, по которым вы не должны использовать переход. Надеюсь, это поможет вам найти лучший способ в вашем коде.
Наслаждайтесь кодированием.