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

Swift 如果条件有效,则转到下一个ViewController并传递数据,swift,if-statement,uistoryboardsegue,Swift,If Statement,Uistoryboardsegue,我正在尝试从第一个视图控制器切换到第二个视图控制器,并将var dateAndTime=NSDate()的值传递给第二个视图控制器 我的第一种方法是从第一个viewcontroller本身到第二个viewcontroller,在Attributes inspector中定义segue的名称。 接下来,我在第一个viewcontroller中链接一个按钮@IBAction func nextbuttonofithviewcontroller,使用if-else语句和prepareForSegue,

我正在尝试从第一个视图控制器切换到第二个视图控制器,并将
var dateAndTime=NSDate()
的值传递给第二个视图控制器

我的第一种方法是从第一个viewcontroller本身到第二个viewcontroller,在Attributes inspector中定义segue的名称。 接下来,我在第一个viewcontroller中链接一个按钮
@IBAction func nextbuttonofithviewcontroller
,使用
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    }
       }
我的第二种方法是使用
performsguewithidentifier
,但我无法将数据传递到下一个视图控制器,因为
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
}

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

@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
        }  
    }
}

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

@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
        }  
    }
}

在第一段代码中,您似乎在ibaction函数中声明了
prepareforsgue
。您不能这样做,您应该关闭ibaction并在第一个代码块中覆盖其外部的prepareForSegue,似乎您正在ibaction函数内部声明
prepareForSegue
。你不能这样做,你应该关闭iAction并覆盖它之外的prepareForSegue