IOS7, Segue и раскадровки - Как создать без кнопки?

В настоящее время у меня есть представление входа в систему и представление приложения, я успешно реализовал проверку в представлении входа в систему, и мне нужно программно перейти к представлению приложения при успешной проверке.

Я понимаю, что могу добавить переход к кнопке входа в систему, а затем вызвать ее программно, как...

[self performSegueWithIdentifier:@"LoginSegue" sender:sender];

Но это, очевидно, будет срабатывать всякий раз, когда нажимается кнопка (так как был создан переход, прикрепленный к кнопке). Я только что прочитал, что я должен создать кнопку (и скрыть ее), а затем сделать программный вызов для перехода - это выглядит немного "неправильно".

Как можно создать переход, который не привязан к какому-либо конкретному событию пользовательского интерфейса?

Ответ 1

Удалите текущий сегмент.

Прикрепите сегмент от источника контроллера просмотра к месту назначения (а затем назовите его).

Теперь ваш метод нажатия кнопки должен выглядеть примерно так:

Objective-C:

- (IBAction)validateLogin:(id)sender {
    // validate login
    if (validLogin) {
        [self performSegueWithIdentifier:@"mySegue" sender:sender];
    }
}

Swift:

@IBAction func validateLogin(sender: UIButton) {
    // validate login
    if validLogin {
        self.performSegueWithIdentifier("mySegue", sender:sender)
    }
}

Ключевым моментом здесь является то, что контроллер представления происхождения должен быть тем, который вы перетаскиваете, чтобы создать сегмент, а не кнопку или какой-либо другой элемент пользовательского интерфейса.

enter image description here

Лично я перехватываю ВСЕ мои segues таким образом, даже те, которые должны запускаться на простых нажатиях кнопки без какой-либо проверки или логики позади них. Это достаточно просто, чтобы вызвать его по методу кнопок.

И я обычно объявляю все мои имена segue как постоянные строки где-то в проекте.