我成功地在数组中附加数据,但 UITableView
没有插入和显示该数据。
但是出现如下错误
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to insert row 4 into section 0, but there are only 0 rows in section 0 after the update'
我试过这样的:
super.viewDidLoad()
array1=["A1","B1","C1","D1"]
array2=["A2","B2","C2","D2"]
array3=["A3","B3","C3","D3"]
array4=["A4","B4","C4","D4"]
dict1=[0:array1,1:array2,3:array3,4:array4,2:names]
print( (dict1))
print( (dict1[1]?.count)!)
print(dict1.keys.count)
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return (((dict1)[section])!.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
if tableView == tableExplore {
cellMain = tableView.dequeueReusableCell(withIdentifier:"cellExp", for: indexPath) as! ExploreLocallyCell
cellMain.textLabel?.textColor = UIColor(red: 194.0/255, green: 198.0/255, blue: 198.0/255, alpha: 1.0)
cellMain.textLabel?.text=(dict1[indexPath.section])?[indexPath.row]
}
return cellMain
}
public func numberOfSections(in tableView: UITableView) -> Int // Default is 1 if not implemented
{
return dict1.keys.count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
return (names)[section]
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
self.insert(section:indexPath.section, row: indexPath.row)
}
func insert(section:Int,row:Int)
{
print(dict1[section]!)
// Update Table Data
tableView.beginUpdates()
dict1[section]!.append("BAlu")
print(dict1[section]!)
tableView.insertRows(at: [IndexPath(row:dict1[section]!.count-1, section: section)], with: .automatic)
tableView.endUpdates()
tableView.reloadData()
}
最佳答案
// No need of tableView.beginUpdates() and tableView.endUpdates() while you need to do one or two modification in UITableView
// While you are inserting row in table programatically then no need of tableView.reloadData() because its has no meaning to do it. You should either insert or reload. It will give you same result. Diff is reload will take more performs time then insert row.
func insert(section:Int,row:Int)
{
print(dict1[section]!)
// Update Table Data
dict1[section]!.append("BAlu")
print(dict1[section]!)
tableView.insertRows(at: [IndexPath(row:dict1[section]!.count-1, section: section)], with: .automatic)
}
//Or
func insert(section:Int,row:Int)
{
print(dict1[section]!)
// Update Table Data
dict1[section]!.append("BAlu")
print(dict1[section]!)
tableView.reloadData()
}
关于ios - 我想在 swift3 的 tableview 中插入行作为部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45975131/