【问题标题】:when preparing for segue array contains no data (using swift)准备 segue 数组时不包含数据(使用 swift)
【发布时间】:2014-12-29 22:55:41
【问题描述】:

根据按下的按钮,我想将单词列表附加到开始时声明的变量 (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

【问题讨论】:

    标签: arrays swift null segue


    【解决方案1】:

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

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

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

    如果您给它一个标识符SegueToSecondScene,您现在可以定义您的IBAction 来设置pickedList,然后以编程方式执行转场:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多