Как да предаваме данни в едно размотаване (Seift 3)

Два контролера за гледка и размотаваща сега

Размотаваща сега (известна още като „изходяща сега“) е сега, която позволява на потребителя да се придвижва обратно от техния текущ контролер на изглед към предишен контролер на изглед.

Представете си: Имам два контролера за изглед и viewController1 се вижда до viewController2. Потребителят създава или редактира данни в viewController2 и искам да изпратя тези данни обратно в viewController1. Развитата сега може да помогне за това.

За да илюстрирам как използвах развита сега, за да предавам данни между два viewControllers, направих приложение, което изброява любими герои на Mad Men.

Segue: MadMenTableViewController -> AddCharacterViewController

Първият контролер за изглед, MadMenTableViewController, показва табличен изглед на символи. Бутон „+“ в навигационната лента на MadMenTableViewController изпраща потребител към AddCharacterViewController, където потребителят може да въведе име на любим герой в текстово поле и да натисне бутон „Запазване“ в лентата за навигация.

Разгръщане Segue: AddCharacterViewController -> MadMenTableViewController

Когато „размотавам“ сега от AddCharacterViewController, за да върна името на новия герой (низ от textField) обратно в MadMenTableViewController, искам да мога да предам това име на символ с размотаната сега, така че да може да се добави към масива на героите от Mad Men и са показани в таблицата.

Настройка на дъската

В Storyboard от моя MadMenTableViewController контролирах навигационния си бутон „+“ (добавяне) към изгледа AddCharacterViewController и избрах „Show“ (напр. Push) за своя вид на вид.

Настройка на AddCharacterViewController

В моя AddCharacterViewController имам запаметено свойство, наречено символ, което ще държи името на новия символ, въведено от потребителя (от textField). Отменя метода на подготовката (за segue :) и отвивам текста от textField и присвоявам неговата стойност на свойството символ. Именно в тази функция стойността на знака ще бъде върната обратно към MadMenTableViewController, когато шевът се развие.

Настройка на MadMenTableViewController

В моя клас MadMenTableViewController пиша функция @IBAction, unindFromAddVC (_ изпращател :), която ще бъде извикана, когато AddCharacterViewController разгърне сега (при натискане на бутона „Запазване“ и изход на AddCharacterViewController.

По-горе, на линия № 21 имам своята функция unindFromAddVC. Тази функция е това, което ще получи низ за име на персонаж и ще го добави към масива от съществуващи любими Mad Mad.

На линия № 23 проверявам дали източникът, който размотава сега, е желаният от мен AddCharacterViewController.

На ред № 24, ако това наистина е моят AddCharacterViewController, аз отвивам този senderVC и осъществявам достъп до неговия характер (String) свойство (не забравяйте, че този низ държеше името на нашия герой).

На ред # 25 това свойство на символи се добавя към нашия масив madMenCharacters.

На ред # 27, аз не забравяйте да опресните tableView, тъй като сега имаме нов елемент в нашия масив, който трябва да бъде показан.

Свързване на „Запазване“ с „Изход от AddCharacterViewController“

Върнете се в Storyboard, има още едно последно нещо.

Контрол плъзнете бутона „Запиши“ в AddCharacterViewController към иконата му за излизане (оранжева икона вдясно). Когато го пуснете, трябва да се появи методът @IBAction в MadMenTableViewController. Изберете го, изградете и стартирайте приложението си.

Данните от втория ми контролер за преглед вече се предават на моя първи контролер на изгледа! Беше доста лесно!

Да, наистина беше толкова лесно.

Виж това:

Моето репо за този проект можете да намерите тук.

ресурси:

Използване на Segues - Apple Documentation