0

tableView:didSelectRowAtIndexPath: のようなテーブルビューのヘッダービューで選択を検出する方法を誰かに説明してもらえますか? それは私にとって非常に便利です。ヘッダーを UITableCellView として定義したので、UISwitch をアクセサリ ビューとしてアタッチできました。うまく機能しましたが、スイッチで行われた変更を検出できません。助言がありますか?

4

1 に答える 1

1

IB でスイッチを作成するのではなく、スイッチを動的に作成していると仮定します。その場合、スイッチへの変更を受信して​​区別するには、2 つのことを行う必要があります。まず、スイッチを作成するときに、そのtagプロパティを対応するセクションを表す値に設定します (セクション インデックス自体など)。次に、ビュー コントローラーのメソッドにコールバックするイベント ハンドラーをスイッチに追加します。

したがって、 ではtableView:viewForHeaderInSection:、ヘッダー ビューを遅延してインスタンス化し、おそらくキャッシュしてから、次のように言います。

[switch setTag:section];

このようにイベント ハンドラーを追加します。ここで、switchToggled: は他の IBAction と同じように定義されます。

[switch addTarget:self 
           action:@selector(switchToggled:)
 forControlEvents:UIControlEventValueChanged];

sender次に、イベント ハンドラーで受け取った を にキャストしUISwitch *、プロパティを使用tagしてどのスイッチが切り替えられたかを伝えます。

于 2010-05-07T02:47:34.503 に答える