无法使用故事板在Xcode 6中连接插座集合

时间:2014-06-05 17:15:23

标签: swift xcode6

我在Xcode 6中创建插座集时遇到问题.Xcode 6中的插座集合现在作为常规IBOutlet运行,并且您使用相同的@IBOutlet属性来声明插座集合,同时确保为该类型指定数组。我在我的视图控制器的快速文件中做到了这一点,即

@IBOutlet var cardButtons: UIButton[]

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

@IBOutlet var cardButtons: UIButton[] 
我的视图控制器swift文件中的

属性?

4 个答案:

答案 0 :(得分:11)

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

@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()
        }
    }
}

答案 1 :(得分:2)

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

Nate Cook的答案对于附加插座是正确的,但不是插座集合。希望在下一个Xcode 6 beta版本中,这个问题将得到解决。

答案 2 :(得分:2)

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

@IBOutlet strong var cardButtons: NSArray?

请注意以下事项:

  • 你必须使用strong,因为默认情况下@IBOutlet很弱,并且因为数组不在界面中,所以在你有机会使用它之前它会消失。

    < / LI>
  • 您必须使用NSArray,因为您无法将数组标记为强。

当然,了解所包含的类型现在取决于您。

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

答案 3 :(得分:0)

奇怪的是,我用swift做了IBOutlet并且它运行了一段时间,只是意识到它停止工作并且发现在xcode beta的最后一个版本中有些东西被破坏了它无法正常工作。