Обнаружен ноль с использованием протокола в TableViewCell - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь обновить мою модель, используя данные из textField в пользовательской ячейке. Я установил протокол в классе ячейки и отправил информацию моему ViewController, однако я постоянно получаю «Found nil, неявно разворачивая необязательное значение». Что мне не хватает? Спасибо!

protocol UpdateDelegate {
   func didUpdate (someText: String)
}

class customTableViewCell: UITableViewCell {
   var updateDelegate: UpdateDelegate!

   @IBOutlet weak var someDescriptionField: UITextField!
   @IBAction func someDescriptionField(_ sender: UITextField) {
      updateDelegate.didUpdate(someText: sender.text ?? "") //error is here
   }
}

extension ViewController : UpdateDelegate  {
   func didUpdate (someText: String) {
      print(someText)
   }
 }

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate,  UIGestureRecognizerDelegate {

//....

   viewDidLoad() {
      self.tableView.delegate = self
      self.tableView.dataSource = self
   }
}

let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! TableViewCell

   cell.someDescriptionField.text = meal.arrayOfPossibleDishes[indexPath.section].arrayOfSteps[indexPath.row-1].stepName
   cell.layer.cornerRadius = 10
return cell
}

1 Ответ

1 голос
/ 24 января 2020

Очень простой ответ: вы никогда не устанавливаете делегата в своей камере. Поскольку ваш класс ViewController соответствует вашему протоколу UpdateDelegate, вы можете обновить свой метод cellForRow следующим образом:

let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! TableViewCell
//set the delegate when setting up the cell
cell.updateDelegate = self
cell.someDescriptionField.text = meal.arrayOfPossibleDishes[indexPath.section].arrayOfSteps[indexPath.row-1].stepName
cell.layer.cornerRadius = 10
return cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...