UISegue
— это объект в UIKit, представляющий переход между двумя view controllers в Storyboard. Он инкапсулирует информацию о:
// Пример выполнения segue программно
performSegue(withIdentifier: "showDetail", sender: self)
prepare(for:sender:)
, где можно настроить целевой контроллер.override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
let destVC = segue.destination as! DetailViewController
destVC.item = selectedItem
}
}
Преимущества:
Недостатки:
// Пример программного перехода
let vc = DetailViewController()
navigationController?.pushViewController(vc, animated: true)
Преимущества:
Недостатки:
class MainCoordinator {
func showDetail(for item: Item) {
let vc = DetailViewController()
vc.coordinator = self
navigationController.pushViewController(vc)
}
}
Преимущества:
Недостатки:
Метод | Плюсы | Минусы | Когда использовать |
---|---|---|---|
Storyboard Segue | Быстро, наглядно, просто | Сложная логика, хрупкость | Прототипы, простые переходы |
Программная | Гибкость, контроль | Больше кода | Средние/сложные проекты |
Координаторы | Чистая архитектура, тестируемость | Сложность внедрения | Большие проекты с глубокой навигацией |
Роутеры | Универсальные ссылки, гибкость | Избыточность для малых проектов | Приложения с deep linking |
@IBAction func unwindToMain(segue: UIStoryboardSegue) {
// Обработка возврата
}
UIStoryboardSegue
UISegue
— удобный инструмент для простой навигации в Storyboard, но для сложных проектов лучше рассматривать программные подходы (координаторы/роутеры). Выбор зависит от масштаба проекта и требований к гибкости навигации.