Ios 快速访问按钮标签

Ios 快速访问按钮标签,ios,swift,uibutton,autolayout,Ios,Swift,Uibutton,Autolayout,我创建了多个具有唯一标记的按钮,并将这些按钮添加到项目的UIView中。我想重新访问它们,以便可以将按钮添加到视图字典中以进行自动布局 func createButtons() { for index in 0...10 { var button = UIButton.buttonWithType(UIButtonType.System) as UIButton button.tag = index self.view.addSubview

我创建了多个具有唯一标记的按钮,并将这些按钮添加到项目的UIView中。我想重新访问它们,以便可以将按钮添加到视图字典中以进行自动布局

func createButtons() {
    for index in 0...10 {
        var button = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.tag = index
        self.view.addSubview(button)
 }
为自动布局目的创建视图词典的代码

func createDictionary() {
    var mbd : [String:UIButton]! = [:]

    for index in 0...10 {
        let tmpButton = self.view.viewWithTag(index) as? UIButton
        mbd["button" + String(index)] = tmpButton
    }
    return mbd
}
然而,我不认为上面的代码正在创建任何字典,我也不知道为什么。如果我在第一个for循环中移动附加到字典中的代码,那么一切都会正常工作。但是我正在尝试使用viewWithTag方法,因为我经常需要它


非常感谢您的指导。

如果除了创建字典之外,您不需要其他任何标记,您可以在创建按钮的同时创建字典

我建议这样做:

func createButtons (){
    var mbd : [String:UIButton]! = [:]
    for index in 0...10 {
       var button = UIButton.buttonWithType(UIButtonType.System) as UIButton
       self.view.addSubview(button)
       mbd["button" + String(index)] = button
    }
}
此解决方案的性能也更高,因为您不需要两次调用循环,而且,由于您已经有了按钮,因此不再需要调用viewWithTag


希望这对你有用。让我知道进展如何

viewWithTag可能是邪恶的,特别是当您使用0作为第一个值时,因为0是所有视图的默认值…那么,跟踪按钮的更好方法是什么?从大于0的唯一索引开始。另外,您的代码也不清楚。您创建了一个变量buttonsDictionary,它在该函数中不再使用。而是使用mbd,它是一个类变量吗?这也是从该函数返回的…很抱歉,这是一个输入错误。因此,从1中唯一索引但仍使用viewWithTag是可以的?如果它是唯一的,而不是0,则可以。很遗憾,稍后我需要在其他函数中重新访问按钮。您仍然可以添加标记,只需索引+1*100或类似的内容。或者,您可以将字典设置为属性,并在需要时从那里检索按钮