准备 segue 数组时不包含数据(使用 swift)
Posted
技术标签:
【中文标题】准备 segue 数组时不包含数据(使用 swift)【英文标题】:when preparing for segue array contains no data (using 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
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于准备 segue 数组时不包含数据(使用 swift)的主要内容,如果未能解决你的问题,请参考以下文章
准备使用数组进行 Segue - Xcode 8.0 Swift 3.0
UINavigationBar 大标题在执行 segues 时不调整大小