我的問題如何在iOS中的UITableView處理動態部分和行
當我處理UITableView
,我基本都與我部和行陣列table_data
。
[
{
title : "section A title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
},
{
title : "section B title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
},
]
我用heightForHeaderInSection
,cellForRowAtindexPath
,titleForHeaderInSection
,didSelectRowAtindexPath
方法,這樣
if indexPath.section == 0 {
//section A
if indexPath.row == 0 {
//do something with table_data[0]["rows"][0]["data"]
}
elesif indexPath.row == 1 {
//do something else
}
}
if indexPath.section == 1 {
//do something for section B
}
與數字0
,1
等工作變得很頭疼,當我table_data
陣列是動態的。動態的意思是,某些部分或行可以有不同的位置或根本不存在。
例如,我刪除部分A和我的陣列是
[
{
title : "section B title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
}
]
我喜歡這個
self.section_A_position = 0
self.section_B_position = 1
func afterRemoveSectionA() {
section_A_position = -999
section_B_position = section_B_position - 1
//write here another new sections for -1
}
添加另一個部分C作爲0元素
self.section_C_position = -999
func afterAddSectionC() {
section_C_position = 0
section_A_position = section_A_position + 1
section_B_position = section_B_position + 1
}
然後用section_positions
in函數
if indexPath.section == section_A_position {
//section A
if indexPath.row == 0 {
//do something with table_data[0]["rows"][0]["data"]
}
elesif indexPath.row == 1 {
//do something else
}
}
if indexPath.section == section_B_position {
//do something for section B
}
它看起來很簡單,但是當我有很多部分和很多情況下隱藏或移動它在數組中,很難控制和添加新類型的部分。有時我創建section_positions_map
數組將其存儲在一起,並使+1
,-1
操作循環。但是當我需要這種行爲時,它並不能幫助它在每個TableViewController中組織它仍然很困難。
問題
你知道,使這部分更容易的任何方法或框架?
我的想法
- 添加
type
屬性我字典
{
title : "section A title",
rows: [
{data: row_1_data},
{data: row_2_data}
]
type : "section_a"
}
,並檢查if table_data[0]["type"] == "section_a"
(或使用enum
收集類型)
- Subclass my Dictionar y和檢查
if table_data[0] is SubClassSectionA
但他們兩人長相醜陋的我。
謝謝您的回答。這是有趣的方式。但是如果我在一節中有不同的rowData行爲呢? –
對於每個行對象,函數rowData.tapHandler可以不同。你可以放任何你想要的東西。 –