現在、Xcodeでアプリケーションを開発中です。このアプリでは、複数のチェックボックスで表ビューセル(オブジェクト)の内容をフィルタリングすることができるようにしたいと考えています(図1参照)。XCODEフィルタテーブルビューマルチチェックボックス付きのセル
すべてのオブジェクトを表形式で示したthatsの値を有する8つの特性、又はを有しています。フィルタ領域に表示されるチェックボックスは、これらの8つのプロパティと関係しています。
評価:
var objects:[Object] = [
Object(name: "Lorem Ipsum", prop1: "3", prop2: "1", prop3: "1", prop4: "1", prop5: "1", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "1", prop3: "1", prop4: "3", prop5: "1", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "2", prop3: "2", prop4: "2", prop5: "2", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "2", prop2: "3", prop3: "3", prop4: "1", prop5: "3", prop6: "1", prop7: "3", prop8: "2"),
Object(name: "Lorem Ipsum", prop1: "1", prop2: "3", prop3: "1", prop4: "2", prop5: "2", prop6: "3", prop7: "2", prop8: "1"),
Object(name: "Lorem Ipsum", prop1: "2", prop2: "3", prop3: "1", prop4: "1", prop5: "1", prop6: "1", prop7: "3", prop8: "2")
]
:
- CheckBox1を= PROP1
- Checkbox2 = PROP2
- Checkbox3 = prop3
- など。
は配列オブジェクト
すべてのチェックボックスをオフにすると、すべてのオブジェクトに同じデフォルトの色(青色)が表示されます。
しかし、チェックボックスのいずれかがチェックされている場合、フィルタは、値又はように、選択されたチェックボックスに関連するプロパティを有するオブジェクトの色を変更する必要があります。値がの場合2 =緑色に変更し、値がの場合3 =紫色に変更します。
checkbox2が選択されている場合は、またはとしてPROP2を持つすべてのオブジェクトは、別の色を持っている必要があります[写真2参照]
私は研究をしましたが、それを行うための方法を見つけることができませんでしたし、それを機能させる。誰かが助けることができたら、それはすばらしいことでしょう!
EDIT-NOTE:ユーザーが1と2の2つのチェックボックスを選択した場合、プロパティ1または2の値が3のオブジェクトは、これらのプロパティの値が2の場合でも紫色にする必要があります。したがって、値3は2以上の重さです。
チェックボックスを表示している現在のセルを単にリロードすることはできますか? 'tableView。reloadRows(at:[currentIndexPath]、with:auto) ' – Nathaniel
これは可能ですが、多くの配列を正しくレンダリングする必要がありますか?ユーザーが複数のチェックボックスを選択するとどうなりますか? – Maarten
質問を正しく理解していれば、各セルにオブザーバを追加しない限り、チェックボックスを選択/選択解除するたびにtableViewデータをリロードするしかないと思います。リフレッシュのためのよりスムーズなアニメーションが必要な場合は、 'tableView.reloadSections(IndexSet(integer:0)、with:auto)'を使用して、最も好きなアニメーションを選択してください。 – Nathaniel