在Swift中使用标签

Tom*_*y D 5 tags uibutton ios swift

我的控制器中有大约15个UIButton.我试图用一个简单的for循环来清除其中的10个,看起来我正在遇到某种冲突.

当我按下按钮清除时,我收到以下错误:

无法将'_UISizeTrackingView'(0x18a023c)类型的值转换为'UIButton'(0x1899298).(LLDB)

对于循环是:

for var i = 0; i < 9; i++ {
    button = view.viewWithTag(i) as! UIButton
    button.setImage(nil, forState: .Normal)
}
Run Code Online (Sandbox Code Playgroud)

我已将其缩小到使用标记0的项目的问题.我查看了View Controller场景中的所有项目,但似乎找不到任何冲突.我只看到使用tag = 0的一个按钮.

我甚至通过用'0'替换循环中的'i'来解决它并得到同样的问题.当我用'1'或'2'替换它时,可以正常使用该单个图像.

有什么方法可以看到哪个对象使用标签0?我点击了所有这些(包括主要的'视图'),但似乎找不到任何东西.

Sul*_*han 9

正如@ranunez已经说过的那样,默认标签是0.我不同意使用非零标签的建议.

我的建议是,根本不要使用标签.如果要在代码中使用视图,请为其声明一个插座并连接它.如果要迭代多个视图,请从您的商店创建一个数组或使用一组商店:

@IBOutlet var buttons: [UIButton]!
Run Code Online (Sandbox Code Playgroud)