4

iOSでテキストをリンクのように動作させる一般的な方法は、UIButtonにすることのようですが、UIButtonaddTargetまたはgestureRecognizerのaddTarget両方に、ボタンが押されたときにメソッドに渡すことができる引数がないことに気付きましたか?

状況としては、サーバーから「パイナップル」、「アップル」、「オレンジ」などの単語のリストが返される場合があり、その数は異なる場合があります。これらの単語は画面に表示され、単語を押すとViewControllerが呼び出され、メインのViewControllerが置き換えられます。

1つの方法はUIButtonのタグを使用することのようです。したがって、ボタンを設定するときに、ボタンに0のタグを付け、現在のビューまたはビューコントローラの別の配列で、要素0がNSStringオブジェクトを指すようにします。 「パイナップル」という言葉。そのため、ハンドラーでタグを取得し、それを使用して文字列を取得できます。しかし、それはあまり構造的ではないように見えるので、これが唯一の方法です。もっと良い方法はありますか?

4

2 に答える 2

1

私のひざまずいた答えは、 をサブクラス化することを単に提案することでしたUIButton。プロパティを既存のクラスに追加したいときはいつでも、「サブクラス」が頭に浮かぶ最初の答えです。しかし、 をサブクラス化しようとするとUIButton、うまく機能しませんでした。「UIButton サブクラス」を検索すると、これはよく知られた問題であり、いくつかの推奨される解決策があることがわかりました。

連想参照を使用してカテゴリを作成することと、代わりにa をサブクラス化するだけの単純なアプローチの両方を試しUIView、目的のボタンをそのサブビューにします。どちらのアプローチもうまく機能します。しかし、単にサブクラス化するという直感的に魅力的なオプションはうまくUIButton機能しませ

しかし、オブジェクトにプロパティを追加するためのさまざまな回避策は機能しますが、それらは非常に直感的ではないように思われるため、これらの面倒なボタンのサブクラス化を追求するのではなく、配列や辞書で数値UIButtonを使用するなど、単純なものに戻る傾向があります。tag技術。

于 2012-09-23T04:25:24.763 に答える
0

変更可能な辞書を作成します。単語をボタンに関連付けるには、nsnumber でラップされたボタン アドレスをキーとして追加し、単語をオブジェクトとして追加します。ボタンが押されて「送信者」とともにアクション メッセージが送信されると、辞書から現在の単語を取得できます。

于 2012-09-23T13:54:56.667 に答える