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

Posted

技术标签:

【中文标题】如果条件有效,则转到下一个 ViewController 并传递数据【英文标题】:segue to next ViewController and pass data if condition is valid 【发布时间】:2016-07-04 13:16:17 【问题描述】:

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

我的第一种方法是从第一个 viewcontroller 本身到第二个,在属性检查器中定义 segue 的名称。 接下来,我在第一个视图控制器中链接一个按钮@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

【问题讨论】:

在第一个代码块中,您似乎在 ibaction 函数中声明了prepareForSegue。你不能这样做,你应该关闭 ibaction 并覆盖它之外的 prepareForSegue 【参考方案1】:

注意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
          
    

【讨论】:

以上是关于如果条件有效,则转到下一个 ViewController 并传递数据的主要内容,如果未能解决你的问题,请参考以下文章

如果 Notepad.exe 正在运行,则 taskkill 如果未运行,则转到下一条语句

Swift - 如果条件满足,则转到特定视图

如果需要的页面存在,如何进行链接测试,如果存在则转到它?

Camel,使用字段条件拆分带头的大型XML文件

Oracle 程序:从表 A 中读取,如果没有找到,则转到表 B

Excel VBA - 基于活动单元格运行宏