从Swift中的IBOutletCollection获取一个项目

时间:2015-05-26 07:58:15

标签: ios swift uibutton iboutletcollection

我收到错误"表达类型不明确没有更多上下文"

这是我的代码

@IBOutlet var customerDashboardButtons:[NSArray]?

var predicate = NSPredicate(format: "SELF.tag == %d", tag)
var filteredButtons = customerDashboardButtons!.filter { predicate.evaluateWithObject($0) };
if 0 < filteredButtons.count {
      var button = customerDashboardButtons!.first
      button.hidden = true // getting an error in this line as "Type of expression is ambiguous without more context
 }

我尝试了以下内容,

var button:UIButton = customerDashboardButtons!.first //Error "NSArray? is not convertible to UIButton"

var button = customerDashboardButtons!.first as UIButton //Error "NSArray? is not convertible to UIButton"

对此有任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:7)

@IBOutlet var customerDashboardButtons:[NSArray]?

创建一个数组数组 调用customerDashboardButtons!.first将返回数组中的第一个数组(NSArray)([…]也将创建一个数组)

我怀疑您希望customerDashboardButtons成为UIButton的数组,以便您使用

@IBOutlet var customerDashboardButtons:[UIButton]?

在这里使用customerDashboardButtons!.first将为您提供UIButton。由于数组的类型为UIButton,因此您不必将button声明为UIButton。

  var button = customerDashboardButtons!.first

如果更改阵列,则可以正常工作。

答案 1 :(得分:0)

以下是如何创建IBOutletCollection并从中获取项目的示例

1) @IBOutlet var simpleTextField: [UITextField]!

2)从中获取textFiled的示例。

for index in 0...(simpleTextField.count - 1)  {
    let textField : UITextField = simpleTextField[index]
    textField.isUserInteractionEnabled = true
}