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

   }
Другие вопросы по тегам