Swift-等效于IBOutletCollection

发布于 2021-01-31 23:50:44

我正在尝试从Swift的iTu​​nesU中的“开发适用于iPhone和iPad的ios7应用程序”中复制斯坦福Matchismo游戏。

在第3讲幻灯片的第77页上,它显示了使用,IBOutletCollection这不是Swift上的选项。Swift文档示例显示了一个具有数组的示例IBOutlet,但是我不知道如何使Interface
Builder将多个插座连接到同一个IBOutlet/ IBOutletArray。

有人知道如何做到这一点吗?

我知道我可以创建12个网点并以这种方式处理它,但是我想使这项工作与讲义幻灯片中的示例尽可能接近。

关注者
0
被浏览
75
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    编辑

    此问题在Swift的更高Beta版本中已得到修复-接口构建器中的IBCollection选项现在提供了该功能。


    对于Swift的早期Beta版本:

    我遇到了同样的问题:在Beta 2的发行说明中,您发现以下语句:

    Interface Builder不支持在Swift类中声明插座集合

    我通过以下方式解决了这个问题(易于定制):

    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:Objective-
    C到Swift



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看