デリゲートコールによって更新する必要があるテーブルビューコントローラがあります。私は、データソースとデリゲートを設定し、テーブルビューの初期ロード時に、すべて期待どおりに動作します。私は、データソースの更新後に呼び出されるデリゲートメソッドを持っています。デリゲートは、.loadData()を呼び出すテーブルビューコントローラクラスのrefreshメソッドを呼び出します。reloadDataの後にcellForRowAtIndexPathが呼び出されない
reloadDataが呼び出されると、numberOfRowsInSectionが呼び出され、正確に行数が返されます。ただし、cellForRowAtIndexPathは呼び出されません。
この特定のケースでは、numberOfRowsInSectionは2を返します。したがって、cellForRowAtIndexPathは2回呼び出されますが、0回と呼ばれます。
初期ロードでは問題ありません。 reloadDataが呼び出されたときだけです。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()
}
ありがとうございます!
コードを共有できますか? –
コードについては記事を参照してください。 NumberOfRowsInSectionsがゼロではない正確な数値を返しても、reloadDataが呼び出されたときにコードは決して入力されません。 – Pheepster
'numberOfSectionsInTableView'を使用していることを確認し、ゼロを返していないことを確認してください。 – Aziz