У меня есть следующие два ViewControllers (один из них - TableViewController), который CategoryTableViewController имеет метод делегата, который будет вызываться при выборе ячейки таблицы. Затем CreateRecipeViewController реализует этот метод делегата и обрабатывает выбранную строку категории.Swift 2.1 - Неожиданно найдено нуль во время разворачивания необязательного вызова метода делегата
Я получаю fatal error: unexpectedly found nil while unwrapping an Optional
на линии delegate.categoryController(self, didSelectCategory: categoryCell)
print(categoryCell)
правильно печатает значение строки выбранной ячейки таблицы, так что я не знаю, почему я получаю эту ошибку.
Я новичок в реализации протокола, поэтому может быть высокий шанс, что я делаю это неправильно. Я бы очень признателен, если кто-то может дать мне понять эту ошибку.
CategoryTableViewController (выбрать категорию)
protocol CategoryTableViewControllerDelegate: class {
func categoryController(controller: CategoryTableViewController, didSelectCategory category: String)
}
class CategoryTableViewController: UITableViewController {
...
weak var delegate: CategoryTableViewControllerDelegate!
...
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if let categoryCell = recipeCategory[indexPath.row].name {
print(categoryCell)
delegate.categoryController(self, didSelectCategory: categoryCell)
}
}
}
CreateRecipeViewController (получает выбранной категории)
extension CreateRecipeViewController: CategoryTableViewControllerDelegate {
func categoryController(controller: CategoryTableViewController, didSelectCategory category: String) {
let selectedCategory = category
dismissViewControllerAnimated(true, completion: nil)
let cell = RecipeCategoryCell()
cell.configureSelectedCategoryCell(selectedCategory)
recipeCategoryTableView.reloadData()
}
}
UPDATE
'delegate' is nil – dan
Не могли бы вы рассказать о том, как я могу заставить делегат удерживать значение' categoryCell'. Я новичок в этом. –
Нужна ли нисходящая линия? –