根据按下的按钮,我想在开头声明的变量(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
答案 0 :(得分:1)
我推断,如果没有以编程方式执行segue,您必须在Interface Builder中的按钮中同时设置IBAction
和segue。问题是在调用prepareForSegue
之前,segue(和IBAction
)可能被称为。您应该删除该segue,并创建一个新的,您将从IBAction
以编程方式调用。
因此,您不应将segue附加到Interface Builder中的按钮,而只是将按钮连接到IBAction
。然后,您可以通过 control - 从源场景上方的条形图中的视图控制器按钮拖动到目标场景,在两个场景控制器之间定义一个segue:
在场景之间添加了这个segue(但不是源场景中的按钮),您现在可以在Interface Builder中选择segue,转到属性检查器,并为该segue提供唯一的“故事板标识符”: / p>
如果您为其指定了SegueToSecondScene
标识符,则现在可以定义IBAction
以设置pickedList
,然后以编程方式执行segue:
@IBAction func whenSatpinButtonPressed(sender: AnyObject) {
pickedList += ["s","a","t","p","i","n"]
performSegueWithIdentifier("SegueToSecondScene", sender: self)
}