我需要实现一个UITableView
,其字母顺序与Contact App相同,然后选择要扩展的任何单元格。下面是我的字母顺序代码。
var houseHoldArray = ["Ahouse", "AAhouse", "Bhouse", "BBhouse", "BBBhouse", "CHouse", "CCHouse", "CCHouse", "DHouse", "EHouse", "HHouse", "XHouse", "ZHouse"]
var houseHoldAlphabet = ["A", "B", "C", "D", "E", "H", "X", "Z"]
var houseHoldArrayOfDic = [
"A": ["Ahouse", "AAhouse"],
"B": ["Bhouse", "BBhouse", "BBBhouse"],
"C": ["CHouse", "CCHouse", "CCHouse"],
"D": ["DHouse"],
"E": ["EHouse"],
"H": ["HHouse"],
"X": ["XHouse"],
"Z": ["ZHouse"]
]
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return houseHoldArrayOfDic[houseHoldAlphabet[section]]!.count
}
public func numberOfSections(in tableView: UITableView) -> Int {
return houseHoldAlphabet.count
}
public func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return houseHoldAlphabet[section]
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "cell")
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
}
cell?.textLabel?.text = houseHoldArrayOfDic[houseHoldAlphabet[indexPath.section]]?[indexPath.row]
// Configure the cell...
return cell!
}
func sectionIndexTitles(for tableView: UITableView) -> [String]? {
return houseHoldAlphabet
}
func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
return houseHoldAlphabet.index(of: title)!
}
现在假设我选择Ahouse
然后它应该展开并显示subCells。每行应该是可扩展的。
我知道在UITableView上应用展开和折叠的两种方法
如果尝试重新加载部分,上述两种方法都不会给出正确的动画,因为我在每个部分都有多行(可以展开)。
此外,上述两种方法适用于每个章节中的节或单个单元格上的tapGesture。不确定如何为节中的多行实现。
需要建议!!
答案 0 :(得分:0)
您是否使用tableView.beginUpdates()
后跟tableView.endUpdates()
代替tableView.reloadData
尝试了选项2?这将触发高度更改,而无需重新加载整个dataSource