cellForRow(at: IndexPath) в swift 3 ведет себя забавно в XCode 8
Я пытаюсь восстановить ячейку из TableView, используя метод cellForRow(at: IndexPath), но компилятору, похоже, не нравится этот метод, потому что он не позволит мне вызвать его: S
http://imgur.com/aVhpXr5 (пока нельзя публиковать изображения)
Вот фрагмент кода, о котором идет речь:
if let i = self.data.index(of: snapshot.value as! String) {
self.data[i] = snapshot.value as! String
self.tableView.cellForRow(at: i).textLabel!.text = "Modd"
self.tableView.cellForRow(at: [IndexPath(row: i, section: 0)])!.textLabel!.text = "mod"
}
else {
print("Modified an item that wasn't in the data list")
}
Как я должен вызывать метод, если компилятор не принимает ни один из двух?
2 ответа
Решение
Ваша проблема со вторым оператором заключается в том, что вы добавляете indexPath, который вы создаете, в массив.
Используйте следующий код:
self.tableView.cellForRow(at: IndexPath(row: i, section: 0))
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell:UITableViewCell
if let i = self.data.index(of: snapshot.value as! String) {
self.data[i] = snapshot.value as! String
cell = tableView.cellForRow(at: indexPath)!
cell.textLabel!.text = "Modd"
}
else {
print("Modified an item that wasn't in the data list")
}
return cell == nil ? UITableViewCell() : cell
}