2016-03-31 14 views
0

私のUITableViewControllerには、2つのセクションがあります。 セクション1の項目は1つしか選択できませんが、セクション2の項目は1つ以上選択できます.CheckMarkと.Noneを切り替えるセルアクセサリタイプを実装しました。2つのセクションを持つUitableviewcontroller

セクション1では1つの選択肢セクション2.

のtableViewでおそらくこれらを実装する方法任意のアイデア(のtableView:のUITableView、didDeselectRowAtIndexPath indexPath:NSIndexPath)とのtableView(のtableView:のUITableView、didRowAtIndexPath indexPath:NSIndexPath)

+0

私はXcodeを使用しています7.3 – Sammy

答えて

1

以下の方法でこの作業を実行できます。

グローバル変数と配列をとります。 didSelectRowAtIndexPathに必要な値を保存し、テーブルをリロードします。私は同じデモプロジェクトを共有しています。私はそれを作成してテストしました。そのうまく動作します。ここにリンクがあります:Link

+0

ありがとうございますが、リロードデータは高価な操作です。あなたのコードは動作していて、私が必要とするものは間違いありませんが、余分なスペースやデータをリロードする必要のないものを考え出したいと考えています。 私はあなたのコードを使用するつもりです。 – Sammy

+0

正しいと記入してください。 「reloadRowsAtIndexPaths」を使用してテーブル全体をリロードする代わりに、セルだけを確実にリロードできます。それは今は高価ではないはずです:)。 –

1

ひとつのアイデアは、あなたが設定することができテーブルビューのself.tableView.allowsMultipleSelection = YES;プロパティ

あなたはセクションをチェックし、それはセクションの場合は1削除/変数1に格納される前の値を選択解除し、選択 didSelectRowAtIndexPath

配列

における変数
第2値で保管セクション1選択値/新しいもの

保存それはセクション2だ場合、あなたがしたい場合は、VALUを削除することがありUITableViewCellAccessoryType

if (cell?.accessoryType == UITableViewCellAccessoryType.Checkmark){ 

    cell!.accessoryType = UITableViewCellAccessoryType.None; 

}else{ 

    cell!.accessoryType = UITableViewCellAccessoryType.Checkmark; 

} 

により、アレイ内および細胞上に選択した値を選択/選択解除することができますeをdidDeselectRowAtIndexPathの両方のセクションに記載していますが、選択/選択解除コードを書く場合には必要ありません。didSelectRowAtIndexPath