Zubenko1703
@Zubenko1703
iOS dev, хипстер, лодырь.

Как создать переход между ViewController по условию?

Здравствуйте, недавно начал изучать Swift. И когда начал писать на нём дипломную работу появились вопросы. Мне нужно сделать переход по кнопке из одного ViewController(назовём его MainVC), в другой ViewController(назовём его FirstVC) если на Segmented Control выбран первый Segment. Или перейти в третий ViewController(назовём его SecondVC), если на Segmented Control выбран второй Segment.
Если совсем просто сказать - то как по одной и той же кнопке переходить между разными VC, в зависимости от того где стоит галочка?

UPD:
Я вот так вызываю вторую форму, но увы у меня вылетает ошибка "Thread 1: signal SEGABRT":
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("MainGameVC") as UIViewController
self.presentViewController(vc, animated: true, completion: nil)
  • Вопрос задан
  • 12287 просмотров
Решения вопроса 2
ManWithBear
@ManWithBear
Swift Adept, Prague
Кучу раз подымался вопрос переходов между экранами
Как лучше всего передавать данные между ViewContoller'ами?

UPD.
1) Если контроллеры находятся в одном сториборде, то можно использовать self.storyboard
2) Проверьте что у вашего вьюконтроллера действительно стоит это идентификатор
3) Проверьте что текущий вьюконтроллер находиться в стеке навигейшин контроллера
4) Используйте self.navigationController.pushViewController(vc, animated: true)
Ответ написан
Flanker_4
@Flanker_4
Вы все как-то усложнили. Storyboard имеют встроенный механизм переходов между контроллерами, насколько он идеален - отдельная тема для холиваров, но тем не менее

Вам нужно сделать следующее:
1) Создать переход между контралами. Это делается простым перетягиванием
f261aa22f4b64e5286fe9ae0fd8c67dc.png
2) Выбрать этот переход и задать ему идентификатор (любую строку)
25fb387376cc4608ba47aa07a288b211.png
3) в обработчике нажатия кнопки вызвать нужный Вам переход
- (void)someMethod {
     [self performSegueWithIdentifier:@"loginMainSegue" sender:self];
 }

Подробней как это сделать, можно тут посмотреть stackoverflow.com/questions/9248798/perform-segue-...

Чем плох тот вариант, который Вы используете:
Вы грузите viewcontroller ручками со сторибоарда, потом презентуете его в текущем (а что будет если у Вас там где-то выше по иерархии navigationController, или другой контейнер и Вам нужно pushViewController). Ну и самое главное преимущество: простота и наглядность. Открыл storyboard и увидел откуда и куда можно попасть
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы