【问题标题】:Can't hook up an outlet collection in Xcode 6 using storyboard无法使用情节提要在 Xcode 6 中连接插座集合
【发布时间】:2014-06-05 17:15:22
【问题描述】:

我在 Xcode 6 中创建插座集合时遇到问题。Xcode 6 中的插座集合现在可以作为常规 IBOutlet 使用,您可以使用相同的 @IBOutlet 属性来声明插座集合,同时确保为该类型指定一个数组。我已经在我的视图控制器的 swift 文件中完成了这个操作,即

@IBOutlet var cardButtons: UIButton[]

在 Xcode 5 中,当一个控件使用辅助编辑器从情节提要中的元素拖动到相应的视图控制器时,它们会显示一个选项来创建插座或插座集合。这在 Xcode 6 中似乎不再可能,我的猜测是因为 outlets 和 outlet 集合现在共享相同的 @IBOutlet 属性。我应该如何创建一个包含 10 个按钮的插座集合,而无法控制从情节提要视图中拖动每个按钮并将其连接到我的

@IBOutlet var cardButtons: UIButton[] 

我的视图控制器 swift 文件中的属性?

【问题讨论】:

    标签: swift xcode6


    【解决方案1】:

    你说得对,你只需要更正式地定义数组:

    @IBOutlet var cardButtons: Array<UIButton>
    

    现在您可以连接 IB 中的按钮了。


    上述应该工作,但在 Xcode 6 beta 3 中仍然不能工作。解决方法是使用NSArray,直到 Xcode 和 Swift 可以正确处理:

    class ViewController: UIViewController {
        @IBOutlet strong var labels: NSArray!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            for label in self.labels as [UILabel] {
                label.textColor = UIColor.redColor()
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      这是 Xcode 6 beta 下的已知问题: “Interface Builder 不支持在 Swift 类中声明插座集合。(15607242)”

      Nate Cook 的回答对于附加网点是正确的,但对于网点集合则不然。希望在下一个 Xcode 6 beta 版本中这个问题能够得到解决。

      【讨论】:

      • 已在 Beta 4 中修复,因此声称。
      • Array 和 [Type] 都不适用于 Xcode 8 中的插座集合。使用 NSArray 使插座集合显示在 IB 中,但它仍然不允许我连接到它.
      【解决方案3】:

      在 Xcode 6 的种子 3 中,以下语法有效:

      @IBOutlet strong var cardButtons: NSArray?
      

      注意以下几点:

      • 你必须使用strong,因为@IBOutlet默认是弱的,并且由于数组不在接口中,所以在你有机会使用它之前它就会消失。

      • 您必须使用 NSArray,因为您无法将 Array 标记为强。

      当然,知道包含的类型现在取决于您。

      另请注意,当您控制拖动以形成插座集合时,这不是文档或 Xcode 本身所宣传的语法。我无能为力;使用该语法会导致 seg 错误,因此显然需要其他东西,至少现在是这样。

      【讨论】:

        【解决方案4】:

        这很奇怪,我用 swift 做了 IBOutlet 并且它工作了一段时间,只是意识到它停止工作并发现在最后一个版本的 xcode beta 中出现了一些问题,它无法正常工作。

        【讨论】:

          猜你喜欢
          • 2012-04-27
          • 1970-01-01
          • 1970-01-01
          • 2013-12-19
          • 1970-01-01
          • 2018-06-12
          • 1970-01-01
          • 2011-03-21
          • 1970-01-01
          相关资源
          最近更新 更多