私はプログラムで多くのUI要素を作成しています。 50 UILabelsとしましょう。 ラベルプロパティにアクセスする適切な方法は何ですか? は、今私は、[サブビュー]配列内の各ラベルと次の検索ラベルにタグを追加すると「送信者」を介してラベルのプロパティを取得しています。私たちならば、いくつかの問題があるのでプログラムで作成されたUI要素の参照
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)
}
をし、送信者がUILongPressGestureRecognizerあるので、今、私は、disableButton(差出人:)方法で「送信者を経由してプロパティにアクセスすることはできません。
は言うことができます。
ラベルでは機能するが、ボタンでは機能しないと思っているようです。 、
しかし、長いタップはどうですか?私はちょうど触れても問題はありません – drywet
このリンクを長く押すと[長押し](https://stackoverflow.com/questions/45243947/uilabel-long-press-gesture-for-menu-item-of-uimenucontroller) –