2016-11-22 89 views
1

我目前正在Xcode中開發一個應用程序。在這個應用程序中,我想讓用戶可以通過多個複選框過濾表格視圖單元格(對象)的內容[見圖1]。XCODE過濾器表格視圖單元格multipe複選框

Picture 1

在表視圖中所示的每個對象這就是有8個屬性具有值1 ,或。過濾器區域中顯示的複選框與這8個屬性有關。

喜歡:

  • Checkbox1 = PROP1
  • Checkbox2 = PROP2
  • Checkbox3 = prop3
  • 等。

對象陣列:

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") 
] 

當所有複選框未選中時,所有對象都將顯示相同的默認顏色(藍色)。

但是當其中一個複選框被選中,則過濾器需要改變具有相關的屬性來選擇的複選框中的對象的顏色,如值或。當值爲 =改變爲綠色,當值爲 =改變爲紫色。

因此,例如,如果選擇checkbox2,與PROP2爲或所有對象都應該有不同的顏色[見圖2]

Picture 2 (checkbox2 selected)

我做了調查,但無法找到一個方法來做到這一點,讓它起作用。如果有人能幫上忙,那會很棒!

編輯 - 注意:如果用戶選擇兩個複選框,例如1和2,屬性1或屬性2上值爲3的對象需要具有紫色,即使它們的屬性值爲2 。所以值3'重量'超過2

+0

你不能簡單地重新加載顯示覆選框的當前單元格嗎? '的tableView。reloadRows(at:[currentIndexPath],with:.automatic)' – Nathaniel

+0

是的,這是可能的,但是我必須渲染很多數組嗎?如果用戶選擇多個複選框會怎麼樣。 – Maarten

+0

如果我正確理解你的問題,我不認爲你有任何選擇,除了每次複選框被選中/取消選擇時,重新加載tableView數據,除非你想添加觀察員到每個單元格......這似乎過多....如果你想要一個更流暢的刷新動畫,使用'tableView.reloadSections(IndexSet(integer:0),with:.automatic)'並選擇你最喜歡的動畫。 – Nathaniel

回答

0

我會建議也許使用一個字典的所有複選框。爲每個複選框分配一個唯一的tag值(0-7)。

let filters: [Int: Bool] = [0: false, 1: false ... 7:0]

當一個人經由一個fund didSelect(checkbox: UIButton){ self.tableView.reloadData() }選擇,則可以通過將設置self.filters[checkbox.tag] = true更新相應的過濾器。

然後,您的tableView數據項應該通過遍歷所有過濾器並在使用cellForRow(at: IndexPath)爲單元格分配顏色之前檢查它們是否爲真/假過濾。

+0

非常感謝,我要試一試 – Maarten

相關問題