0

アイテムを表示するテーブルがあります。各セルには、アイテムに関する他の何かを表示するために使用されるボタンがあります。表示されているもの(テーブルがモーダルであるため親ビューで使用される)を追跡するために、ボタンを選択するように設定しました。

私の問題は、一度に1つのボタンだけが「選択」されるようにしたいということです。したがって、ユーザーがボタンAをタップし、後でボタンBをタップした場合、ボタンAを「選択解除」するにはどうすればよいですか。

繰り返しますが、ボタンは各セルに埋め込まれているので、各セルを繰り返し処理してボタンを無効にするにはどうすればよいですか(テーブルデータを再読み込みせずに)?

4

2 に答える 2

0

ボタンが押されたかどうかについての情報を保存していると思います。セルは再利用できるため、そうする必要があります。この情報をボタンの選択されたプロパティにのみ保存すると、セルが再利用されると失われます。

選択したボタン セルのインデックスがどこかに保存されていることを考慮して、visibleCells メソッドを使用して UITableView 内のすべての可視セルを反復処理できます。UITableViewCell ごとに、そのインデックスが必要なものでない場合は、ボタンを無効にします。indexPathForCell:を使用してインデックスを確認します。

そして、あなたは良いはずです。もちろん、dataSource がセルを要求するたびに、indexPath が選択されているかどうかを確認し、選択されている場合は、button.selected を YES に設定します。

于 2012-11-09T20:24:10.277 に答える
0

UIButtons の代わりに UISegementedControls または UISwitches を使用したいと思います。これらの他のコントロールのいずれかは、ユーザーがいずれかを選択すると、他のすべてのオプションを自動的に選択解除するように設定されています。また、ユーザーが何を選択したかを知るための非常に優れた方法を提供し、現在選択されているアイテムであるかどうかに応じて各オプションが異なるように表示されるように構成できます。また、選択したアイテムが変更されたときに、外観とはまったく関係のない他のコードをトリガーすることもできます。また、各オプションを異なる方法で処理するようにコードを記述することもできます。

于 2012-11-09T20:46:19.720 に答える