Начните разработку приложений для iOS (Swift) - кнопка "Добавить" больше не работает
Я следую за Начать разработку приложений для iOS (Swift) от Apple, на параграфе " Реализация и редактирование поведения". После того, как я реализовал режимы редактирования и удаления, я заметил, что кнопка " Добавить" (+) больше не работает. Вот код, который выдает ошибку при попытке добавить кнопку:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
switch(segue.identifier ?? "") {
case "AddItem":
os_log("Adding a new meal.", log: OSLog.default, type: .debug)
case "ShowDetail":
guard let mealDetailViewController = segue.destination as? MealViewController else {
fatalError("Unexpected destination: \(segue.destination)")
}
guard let selectedMealCell = sender as? MealTableViewCell else {
fatalError("Unexpected sender: \(sender)")
}
guard let indexPath = tableView.indexPath(for: selectedMealCell) else {
fatalError("The selected cell is not being displayed by the table")
}
let selectedMeal = meals[indexPath.row]
mealDetailViewController.meal = selectedMeal
default:
fatalError("Unexpected Segue Identifier; \(segue.identifier)")
}
}
Вот предупреждение и предложенное исправление его
Вот файлы, предоставленные Apple, которые, кстати, те же, что я использую: https://developer.apple.com/sample-code/swift/downloads/08_ImplementEditAndDeleteBehavior.zip
Я знаю, что этот код старый и его нужно обновить до Swift 4.1, но у меня нет большого опыта, поэтому я не могу сделать это сам. Спасибо всем за помощь.
1 ответ
В соответствии с ошибкой, вы достигаете случая по умолчанию при включении идентификатора segue. Это означает, что идентификатор в последовательности не соответствует ни одному из случаев. И действительно, в сообщении говорится, что идентификатор addItem
, который не совпадает AddItem
или же ShowDetail
, Похоже, идентификаторы segue чувствительны к регистру, а? Поэтому измените идентификатор сегмента в вашей раскадровке так, чтобы он совпадал с тем, который вы ожидаете AddItem
, и попробуй еще раз.