我已成功在数组中附加数据,但UITableView
未插入并显示该数据。
但显示以下错误
由于未捕获的异常而终止应用 ' NSInternalInconsistencyException',原因:'尝试插入第4行 进入0部分,但是在0之后的0部分只有0行 更新'
我试过这样的话:
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()
}
答案 0 :(得分:1)
// 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()
}