我有一个表视图控制器,需要通过委托调用进行更新。我已经设置了数据源和委托,并且在tableview的初始加载时,所有工作都按预期工作。我有一个在数据源更新后调用的委托方法。委托在表视图控制器类中调用一个刷新方法,该方法调用.reloadData()
调用reloadData时,会调用numberOfRowsInSection并准确返回行数,但不会调用cellForRowAtIndexPath。
在这种特殊情况下,numberOfRowsInSection返回2,因此应该调用cellForRowAtIndexPath两次,但它被称为零次。
在初始加载时一切都很好。仅当调用reloadData时才会被忽略.tatt cellForRowAtIndexPath将被忽略。我在Obj-C中多次做过同样的事情,没有任何奇怪之处。 Swift中是否存在任何已知问题?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(LayerMenuCell.reuseId) as! LayerMenuCell
// ....
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print(layerEntries?.count)
return (layerEntries?.count)!
}
func refresh() {
self.layersTableView.reloadData()
}
谢谢!
答案 0 :(得分:4)
尝试设置delegate
的{{1}}和dataSource
:
UITableView
答案 1 :(得分:0)
如文档中所述:
正常运行的表视图需要三个表视图数据源 方法
func numberOfSectionsInTableView(tableView: UITableView) -> Int
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
确保您实现上述三种委托方法,并返回除nil或0以外的其他值。
在两种情况下,单元格高度可能为0 /表高度为0的情况下,不会调用行方法的单元格。
还要确保正确设置委托并在主线程上调用reloadData方法。更多关于here
答案 2 :(得分:-2)
Tableview无法按预期工作时需要检查的事项:
1.通过故事板或代码设置委托和数据源。
self.tableView.delegate = self
self.tableView.dataSource = self
2.检查故事板中的tableView是否连接到tableView插座 3.check numberOfRowsInSection和numberOfSectionsInT ableView返回正确的值 4.检查方法是否写得正确 5.在UIViewController之后添加委托和数据源。
<UITableViewDelegate , UITableViewDataSource>
如果你遗漏任何东西,这将对你有所帮助。