我正在尝试用 Swift 复制 iTunesU 中“为 iphone 和 ipad 开发 ios7 应用程序”中的斯坦福 Matchismo 游戏。
第三讲第77页slides https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550#,它显示使用IBOutletCollection
这在 Swift 上不是一个选项。 Swift 文档示例显示了一个示例,其中包含一组IBOutlet
,但我不知道如何使 Interface Builder 将多个插座连接到同一个IBOutlet
/IBOutlet
Array.
有人知道如何做到这一点吗?
我知道我可以创建 12 个出口并以这种方式处理它,但我想让这项工作尽可能接近讲座幻灯片中的示例。
Update:现在,这在 Xcode 中可以正常工作 - “Outlet Collection”是 Interface Builder 中的连接选项之一,它创建的内容如下所示:
@IBOutlet var labelCollection: [UILabel]!
当我们等待修复时,您可以使用计算属性来近似这一点。假设我的观点有五个UILabels
我想要在一个集合中。我仍然必须声明每一个,但随后我还声明一个收集它们的计算属性:
class MyViewController {
@IBOutlet var label1 : UILabel
@IBOutlet var label2 : UILabel
@IBOutlet var label3 : UILabel
@IBOutlet var label4 : UILabel
@IBOutlet var label5 : UILabel
var labels: UILabel![] { return [label1, label2, label3, label4, label5] }
有点烦人,但从那时起我们可以治疗labels
财产就好像它是一个IBOutletCollection
,并且一旦错误修复,就不必更改其余的代码:
override func viewDidLoad() {
super.viewDidLoad()
for (index, item) in enumerate(self.labels) {
item.text = "Label #\(index)"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)