如果条件有效,则转到下一个 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】:
注意performSegueWithIdentifier
和prepareForSegue
方法应该一起使用。首先,当您确定需要移动到新的视图控制器时调用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 如果未运行,则转到下一条语句