首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift - IBOutletCollection等效

Swift - IBOutletCollection等效
EN

Stack Overflow用户
提问于 2014-06-05 05:43:17
回答 7查看 36K关注 0票数 56

我试图复制斯坦福Matchismo的游戏“为iphone和ipad开发ios7应用程序”( iTunesU in ITunesU in Swift )。

在第三节课幻灯片的第77页,它显示了使用IBOutletCollection,这在Swift上不是一个选项。Swift示例展示了一个具有IBOutlet数组的示例,但我不知道如何使Interface将多个端口连接到同一个IBOutlet/IBOutlet数组。

有人知道怎么做了吗?

我知道我可以创建12家分店,并以这种方式来处理,但我想让这个工作尽可能接近于讲演幻灯片中的例子。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-06-20 13:28:41

编辑

这是修正后的Beta版本的Swift -现在在IBCollection选项中的接口构建器。

用于早期Beta版本的Swift:

我遇到了同样的问题:在Beta 2的发布说明中,您可以找到以下声明:

接口生成器不支持在Swift类中声明出口集合

我以以下方式解决了这个问题(易于自定义):

代码语言:javascript
复制
class CardGameViewController: UIViewController {
  @lazy var cardButtons : UIButton[] = {
    var tempBtn: UIButton[] = []
    for v:AnyObject in self.view.subviews {
      if v is UIButton {
        tempBtn.append(v as UIButton)
      }
    }
    return tempBtn
  }()
...

基本上,它循环遍历所有子视图,并检查其中一个是否为UIButton。在这种情况下,它将被添加到临时数组中。然后使用这个临时数组来延迟实例化cardButtons数组。有关所有详细信息,请查看:Matchismo:目标-C到Swift

票数 10
EN

Stack Overflow用户

发布于 2014-06-05 17:34:31

更新: Xcode now中的更新-- "Outlet Collection“是Interface中的连接选项之一,它创建的内容如下:

代码语言:javascript
复制
@IBOutlet var labelCollection: [UILabel]!

当我们等待修复时,您可以使用计算的属性来近似这个值。假设我的视图有五个UILabels,我想要在一个集合中。我仍然必须声明每一个,但随后我也声明了一个收集它们的计算属性:

代码语言:javascript
复制
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来处理,并且一旦修复了bug,就不必修改我们的其余代码了:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    for (index, item) in enumerate(self.labels) {
        item.text = "Label #\(index)"
    }
}
票数 89
EN

Stack Overflow用户

发布于 2015-04-22 07:15:27

使用:

代码语言:javascript
复制
@IBOutlet var lineFields: [UITextField]!

然后按照顺序从UITextField元素拖动到lineFields

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24052459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档