0

デリゲートUITableViewを使用して各セルにチェックマークを実装しましdidSelectRowAtIndexPathた。今、私は他のすべてのセルを無効にするセルを選択したい(チェックマークを外します)、またはその逆です。(例: 8 番目のセルにチェック マークが表示されている 8 番目のセルを選択し、他のセルのチェック マークを削除するには、そのセルにチェック マークが表示されている他のセルを選択し、8 番目のセルのチェック マークを削除します)。

これをどのように実装しUITableViewますか?

誰かが知っているなら、私を助けてください。

4

1 に答える 1

0

これを実現するには、これら 2 つの ivar を UITableViewController クラスに追加して、現在チェックされているセルを追跡します。

NSInteger currentlyCheckedRow;
NSInteger currentlyCheckedSection;

初期化メソッドで、可能な行の値と一致しないように、currentlyCheckedRowおよびcurrentlyCheckedSectionを負の整数に設定します。-1

-tableView:cellForRowAtIndexPath:メソッドに以下を追加します。

// determine if cell should have checkmark
cell.accessoryType = UITableViewCellAccessoryNone;
if ( (indexPath.row == currentlyCheckedRow) &&
     (indexPath.section == currentlyCheckedSection) )
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
};

が呼び出されcurrentlyCheckedRowたときに ivar を更新します。-tableView:didSelectRowAtIndexPath:

 currentlyCheckedRow = indexPath.row;
 currentlyCheckedSection = indexPath.section;
 [tableView reloadData];
于 2012-06-11T07:11:13.323 に答える