如果条件有效,则转到下一个ViewController并传递数据

时间:2016-07-04 13:16:17

标签: swift if-statement uistoryboardsegue

我正试图从第一个viewcontroller转到第二个viewcontroller并将var dateAndTime = NSDate()的值传递给第二个视图控制器。

我的第一种方法是从第一个viewcontroller本身转到第二个,在Attributes检查器中定义segue的名称。 接下来,我在第一个viewcontroller中链接一个按钮@IBAction func nextButtonToFifthViewController,使用if else语句和prepareForSegue,但代码无法编译,因为我不允许覆盖prepareForSegue

@IBAction func nextButtonToFifthViewController(sender: AnyObject) {
    if timeRestricted.contains(hourComponents){
        self.label.text = "Please choose a time betwen 7:00 - 19:00"
    } else {

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        var destViewController:FifthViewController = segue.destinationViewController as! FifthViewController
        destViewController.dateAndTimeSelected = dateAndTime    }
       }

我的第二种方法是使用performSegueWithIdentifier,但我无法将数据传递到下一个视图控制器,因为dateAndTimeSelected无法在第一个视图控制器中使用。

@IBAction func nextButtonToFifthViewController(sender: AnyObject) {
    if timeRestricted.contains(hourComponents){
        self.label.text = "Please choose a time betwen 7:00 - 19:00"
    } else {

        performSegueWithIdentifier("toFifthViewController", sender: self)
  dateAndTimeSelected = dateAndTime
}

1 个答案:

答案 0 :(得分:4)

请注意,performSegueWithIdentifierprepareForSegue方法应该一起使用。首先,当您确定需要移动到新的视图控制器时调用performSegueWithIdentifier,然后可以在prepareForSegue

中配置新的视图控制器
@IBAction func nextButtonToFifthViewController(sender: AnyObject) {
    if timeRestricted.contains(hourComponents){
        self.label.text = "Please choose a time betwen 7:00 - 19:00"
    } else {
        performSegueWithIdentifier("toFifthViewController", sender: self)
    }
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "toFifthViewController" { 
        if let destViewController = segue.destinationViewController as? FifthViewController {
            destViewController.dateAndTimeSelected = dateAndTime
        }  
    }
}