准备segue数组时不包含任何数据(使用swift)

时间:2014-12-29 22:55:42

标签: arrays swift null segue

根据按下的按钮,我想在开头声明的变量(pickedList)附加一个单词列表。当我来准备segue时,它会覆盖已添加的内容,并且只使用在开始时添加的空数组。我可以在准备segue位和这些转移中附加项目,但这不是我想要的。我对编程非常陌生,并且已经搜索了很多,但似乎无法找到我想要的东西。提前谢谢!

代码如下所示:

class activeLiteracyOptionsViewController:UIViewController {

@IBOutlet weak var satpinButton: UIButton!
var pickedList = [String]()

@IBAction func whenSatpinButtonPressed(sender: AnyObject) {

    pickedList += ["s","a","t","p","i","n"]      
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

   let destinationViewController : flashcardsViewController = segue.destinationViewController as                flashcardsViewController

   destinationViewController.listToPlay = pickedList

1 个答案:

答案 0 :(得分:1)

我推断,如果没有以编程方式执行segue,您必须在Interface Builder中的按钮中同时设置IBAction和segue。问题是在调用prepareForSegue 之前,segue(和IBAction)可能被称为。您应该删除该segue,并创建一个新的,您将从IBAction以编程方式调用。

因此,您不应将segue附加到Interface Builder中的按钮,而只是将按钮连接到IBAction。然后,您可以通过 control - 从源场景上方的条形图中的视图控制器按钮拖动到目标场景,在两个场景控制器之间定义一个segue:

enter image description here

在场景之间添加了这个segue(但不是源场景中的按钮),您现在可以在Interface Builder中选择segue,转到属性检查器,并为该segue提供唯一的“故事板标识符”: / p>

enter image description here

如果您为其指定了SegueToSecondScene标识符,则现在可以定义IBAction以设置pickedList,然后以编程方式执行segue:

@IBAction func whenSatpinButtonPressed(sender: AnyObject) {
    pickedList += ["s","a","t","p","i","n"]      
    performSegueWithIdentifier("SegueToSecondScene", sender: self)
}