【发布时间】:2017-11-25 12:48:28
【问题描述】:
我正在以编程方式创建许多 UI 元素。假设有 50 个 UILabel。 访问标签属性的正确方法是什么? 现在我正在为 [subview] 数组中的每个标签和下一个搜索标签添加一个标签,并通过“发件人”获取标签属性:
func buttonTapped(sender: UIButton) {
for subview in containerView.subviews {
if let label = subview as? UILabel, label.tag == sender.tag {
// do stuff
}
}
}
不确定这是最优雅的方式,因为如果我们将标签更改为按钮会出现一些问题。
让我们说:
func createButton() {
let button = UIButton(frame: CGRect(origin: ...,
size: ...))
button.addTarget(self, action: #selector(buttonTapped(sender:)), for: .touchUpInside)
let longTap = UILongPressGestureRecognizer(target: self, action: #selector(disableButton(sender:)))
longTap.minimumPressDuration = 1
button.addGestureRecognizer(longTap)
.......
containerView.addSubview(button)
}
现在我无法通过 disableButton(sender:) 方法中的“发送者”访问属性,因为发送者是 UILongPressGestureRecognizer。
如果它适用于标签但不适用于按钮,似乎我做错了什么。 请指导我正确的方向
【问题讨论】: