Swift 访问 UIButton 标签
Posted
技术标签:
【中文标题】Swift 访问 UIButton 标签【英文标题】:Swift Accessing UIButton Tags 【发布时间】:2015-04-11 20:41:47 【问题描述】:我创建了多个带有独特标签的按钮,并将这些按钮添加到我项目的 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 loop
中移动我附加到字典的代码,那么一切正常。但我正在努力学习使用viewWithTag
方法,因为我会经常需要它。
感谢任何指导。
【问题讨论】:
viewWithTag
可能是邪恶的,尤其是当您使用0
作为第一个值时,因为0
是所有视图的默认值...
那么有什么更好的方法来跟踪按钮?
以大于 0 的唯一索引开始。另外,您的代码不清楚。您创建了一个变量buttonsDictionary
,该变量在该函数中不再使用。相反,您使用mbd
(它是一个类变量吗?),它也是从该函数返回的......
很抱歉,这是一个错字。所以 1
的唯一索引但仍然使用 viewWithTag
可以吗?
如果是唯一的而不是0就可以了
【参考方案1】:
如果您不需要任何其他标签,除了创建字典,您可以在创建按钮时创建字典。
我会建议这样的事情:
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
。
希望这对你有用。让我知道事情的后续!
【讨论】:
很遗憾,我稍后需要在其他功能中重新访问这些按钮。 您仍然可以添加标签,只需 (index+1)*100 或类似的东西。或者您可以保留字典(将其设置为属性)并在需要时从那里检索按钮以上是关于Swift 访问 UIButton 标签的主要内容,如果未能解决你的问题,请参考以下文章