У меня есть контроллер табличного представления, который необходимо обновить через вызов делегата. Я установил источник данных и делегат, а при начальной загрузке tableview все работает так, как ожидалось. У меня есть метод делегата, который вызывается после обновления источника данных. Делегат вызывает метод обновления в классе контроллера табличного представления, который вызывает .reloadData()cellForRowAtIndexPath не вызывается после reloadData
Когда вызывается reloadData, вызывается numberOfRowsInSection и точно возвращает количество строк, однако cellForRowAtIndexPath никогда не вызывается.
В этом конкретном случае numberOfRowsInSection возвращает 2, поэтому cellForRowAtIndexPath следует вызывать дважды, но он называется нулевым временем.
При начальной загрузке все в порядке. Только когда reloadData называется taht 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()
}
Спасибо!
Вы можете поделиться кодом? –
Смотрите сообщение для кода. Код никогда не входит в cellForRow ... когда вызывается reloadData, хотя numberOfRowsInSections возвращает точный номер, который НЕ равен – Pheepster
Проверьте, используете ли вы 'numberOfSectionsInTableView' и убедитесь, что он не возвращает ZERO. – Aziz