我有TableView分组样式有3个部分,我需要动态添加行到此部分。当我添加:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
没关系,但是当我改变号码号码时,我得到了错误:
2017-03-29 04:21:42.032 TableView-Grouped[81597:7624167] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSSingleObjectArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(
0 CoreFoundation 0x0000000106cc5d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x0000000103fd821e objc_exception_throw + 48
2 CoreFoundation 0x0000000106d1ec2f
我的代码:
import UIKit
class ViewController: UITableViewController {
var arr = ["Row 1", "Row 2", "Row 3"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = arr[indexPath.row]
return cell
}
}
答案 0 :(得分:0)
当我为自定义TableView添加一行时,我需要手动重新加载行的数据:
//swift 2.3
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
//swift 3
DispatchQueue.main.async{
self.tableView.reloadData()
}
如果你有一个附加数据arr
的函数需要在那一刻重新加载,如:
func refresh() {
//remove if need
arr.removeAll()
self.GetData()
DispatchQueue.main.async(execute: {
self.myTable.performSelector(onMainThread: #selector(UICollectionView.reloadData), with: nil, waitUntilDone: true)
})
}