Нам нужно убедиться, что ваши сегы работают правильно.Вам нужно нажать Ctrl + Drag от кнопки «Добавить» на главном tableViewController
к другому контроллеру представления и сделать это «push» переходом.
Затем Ctrl + перетащить с кнопки «Сохранить» наaddNewRecipeViewController
к маленькому значку выхода чуть выше контроллера представления.Это позволит вам настроить переход с обратной стороны (который возвращается к контроллеру основного вида).
Теперь вам нужно установить prepareForSegue()
в addNewRecipeViewController
, который готовит данные для отправки обратно,затем настройте функцию sewwwing в главном tableViewController
для получения данных, обновите массив данными и перезагрузите tableView
.
Сначала в addNewRecipeViewController
.То, что у вас есть, должно работать.Важно то, что вы устанавливаете переменную контроллера представления «ингридиент», поскольку затем ее можно передать обратно первому контроллеру представления.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SaveIngredient",
let ingredientName = fieldAddNameIngredient.text,
let ingredientValue = fieldValueOfIngredient.text
{
ingredient = IngredientModel(titleIngredientRecipe: ingredientName, subtitleIngredientRecipe: ingredientValue)
}
}
Затем в главном tableViewController
мы пишем функцию, котораяполучит данные из сеанса раскрутки.
@IBAction func unwind(sender: UIStoryboardSegue) {
if let sourceViewController = sender.source as? AddNewIngredientViewController, let ingredient = sourceViewController.ingredient {
// Now ingredient holds the new data, so use it as you wish. This is an example:
myIngredients.append(ingredient)
tableView.reloadData()
}
}
Таким образом, вы можете передать все необходимые данные обратно в исходный tableViewController
.Я не совсем уверен, как настроены ваши пользовательские классы (Ingredient, Recipe и т. Д.), Но пока второй контроллер представления (ввода данных) имеет переменную правильного типа для хранения данных, к нему можно получить доступ следующим образом:первый (главный) контроллер представления.
Вот учебник по передаче данных в процессе раскрутки.
Обновление:
IПосмотрели исходный код - проблема не заключалась в предоставлении идентификатора раскрутки в Storyboard.Также было несколько небольших изменений в коде делегата tableView (проверка идентичности tableView с ===
вместо ==
).
На рисунке ниже показано, где предоставить этот идентификатор - это должно соответствовать проверке идентификаторав методе раскрутки.
![Unwind segue at bottom of scene in Storyboard](https://i.stack.imgur.com/IPFXY.png)
![Identifier for unwind segues](https://i.stack.imgur.com/SlqzL.png)