プログラムでビューに複数のボタンを追加し、同じメソッドを呼び出して、それがどのボタンであったかを判別します
-
27-09-2019 - |
質問
プログラムで複数のUIButtonをビューに追加したい-ボタンの数はコンパイル時に不明です。
1つまたは複数のUIButtonをそのように作成できます(ループ内ですが、簡単にするために短縮しています): ジェネラコディセタグプレ
このリンクからコピー/編集:
しかし、buttonClickedでどのように判断しますか:どのボタンがクリックされたか?ボタンを識別するために、可能であればタグデータを渡したいのですが。
解決
実際のボタンオブジェクトへの参照を重要な場所(配列など)に保持するか、ボタンのタグを有用なもの(他のデータ配列のオフセットなど)に設定することができます。たとえば(タグを使用すると、これは一般的に役立つはずなので): ジェネラコディセタグプレ
他のヒント
ボタンにタグを割り当てることができます。 ジェネラコディセタグプレ
次に、-buttonClicked:
で、送信者のタグを確認します。
ジェネラコディセタグプレ
そのためには、ボタンごとに異なるタグを付けて、次のようなコードを使用します。 ジェネラコディセタグプレ
&in method ジェネラコディセタグプレ
など、どのボタンが呼び出されているかを確認します
実行時にボタンを追加する場合は、10 2050以上になります。次に、この状態でuiスクロールビューを使用する必要があります。
ボタンが生成されるときは、それに応じてスクロールビューのサイズを大きくする必要があります。
そして、このようなコードを書くことができます ジェネラコディセタグプレ
UIButtonにはtag
プロパティがあります。これを使用すると、buttonClicked
メソッドで、タグに基づいてクリックされたボタンを確認できます。どのボタンが何であるかについて一定に保ちたいと思うかもしれません。
ボタンごとに適切なタグを設定し、アクションでそのタグを参照します。つまり ジェネラコディセタグプレ
ループでボタンを作成する場合は、反復のインデックスに基づいてタグを簡単に設定できます。そして、あなたの行動の中で: ジェネラコディセタグプレ
誰かがこの問題を抱えている可能性があります:
JasonCocoの回答は、タグを使用してプロパティとして定義されたNSArrayからプロパティにアクセスするまで、問題なく機能しました。
プロパティを「弱い」ではなく「保持する」として定義する必要があったことが判明しました。
Swiftバージョン(ラベル付き):
for index in 1...5 {
var label = UILabel()
label.tag = index
labelsDictionary["Label\(index)"] = label
self.addSubview(label)
}
self.viewWithTag(i)をUILabelとして使用して呼び出します:
(cell.viewWithTag(5) as UILabel).text