Ответ 1
Сначала настройте свойство/свойства для хранения ваших переменных во втором контроллере представления (назначение).
class YourSecondViewController: UIViewController {
var duration:Double?
}
Затем сделайте так, чтобы ваша кнопка запускала ваш собственный переход. Используйте вашу переменную ('duration') в качестве аргумента для отправителя.
class YourFirstViewController: UIViewController {
@IBAction func buttonTapped(sender: AnyObject) {
self.performSegueWithIdentifier("MainToTimer", sender: duration)
}
}
Наконец, передайте данные об отправителе, переопределив метод prepareForSegue:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "MainToTimer") {
let secondViewController = segue.destinationViewController as YourSecondViewController
let duration = sender as Double
secondViewController.duration = duration
}
}
Да, также можно передавать несколько переменных и констант, снова используя параметр 'sender' prepareForSegue. Если у вас есть несколько данных, которые вы хотите передать, поместите их в массив и сделайте этот массив отправителем.
SWIFT 3
С Swift 3 метод prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
был изменен на prepare(for segue: UIStoryboardSegue, sender: Any?)