Как:В чем разница между методами UITableView и эквивалентными методами UITableViewDatasource?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
отличается от:
func cellForRow(at indexPath: IndexPath) -> UITableViewCell?
Я недавно столкнулся с ошибкой, где я простирающейся UITableView
, чтобы иметь возможность перебирать строки в данном разделе.
func forRows(inSection section: Int, condition: (UITableViewCell) ->()) {
for row in 0..<numberOfRows(inSection: section) {
let cell = cellForRow(at: IndexPath(row: row, section: section))!
condition(cell)
}
}
^^^ не работает, ячейка равна нулю на последней строке
func forRows(inSection section: Int, condition: (UITableViewCell) ->()) {
for row in 0..<dataSource!.tableView(self, numberOfRowsInSection: section) {
let cell = dataSource!.tableView(self, cellForRowAt: IndexPath(row: row, section: section))
condition(cell)
}
}
^^^ работает. Я понял, но я этого не понимаю.
В чем разница между методами делегата tableView и их эквивалентными методами на самом TableView?
И ячейка, возвращаемая вызовом 'UITableView cellForRow (at:)', является ячейкой, которая представляет собой представление таблицы, вызванное вызовом 'tableView (_: cellForRowAt:)' в его источнике данных. – rmaddy
спасибо за разъяснение, перепутал его в вопросе, исправил его, чтобы отразить это. –