当前位置: 首页 > 面试题库 >

Swift-等效于IBOutletCollection

戴化
2023-03-14
问题内容

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

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

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

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


问题答案:

编辑

此问题在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



 类似资料:
  • 问题内容: 是否有斯威夫特的本地等效于? 假设我有两个包含键和值的数组,并想将它们放入字典中。在Objective-C中,我会这样做: 当然,我可以遍历两个数组的计数器,使用a 并逐步添加内容。但这似乎不是一个好的解决方案。同时使用和可能是更好的迭代方式。但是,这种方法意味着拥有可变的字典,而不是不可变的字典。 问题答案: 从 Swift 4开始, 您可以直接从键/值对序列创建字典: 这假定所有键

  • 问题内容: 我已经用谷歌搜索,但无法找出什么是等效的。 这是我唯一能找到的(Swift的替代方法responsesToSelector:),但在我的情况下并没有太大意义,因为它检查了委托的存在,我没有委托,我只想检查是否存在新的API在设备上运行时是否返回,如果不是,则返回原先的api版本。 问题答案: 如前所述,在 大多数情况下,您可以使用可选的unwrapper运算符来实现所需的功能。这样,当

  • 问题内容: 在预发布文档中,似乎没有Swift版本的CGPathApply。是否有同等的或替代的?我正在尝试获取CGPath的所有子路径,以便可以从其他起点重绘它。 问题答案: 斯威夫特3.0 在Swift 3.0中,您可以这样使用: 斯威夫特2.2 通过添加,您现在可以直接从Swift进行调用。这是做必要魔术的包装器: (请注意,我的代码中没有提到,但是在Core Graphics模块的声明中使

  • 问题内容: 我正在从xml配置转移到注释。我想转换一个会话范围的bean是 可以通过注释完成此操作吗?如果没有,我该怎么做才能使该声明继续工作? 问题答案: 在spring上下文xml中,执行以下操作: 请注意,尽管如此,你将需要为该包中的所有类编写接口。

  • 在Swift中,字符串中的的等价物是什么 我尝试了以下操作,但收到一条错误消息

  • 使用场景文本识别API连接SAP Leonardo沙箱服务器时出现HTTP 400错误 我在响应对象中得到以下详细信息 {url:https://sandbox.api.sap.com/ml/scenetextrecognition/scene-text-recognition/scene-text-recognition}{Status code:400,Headers{\n Connectio