Intereting Posts
Как получить доступ к содержимому WKWebView в WKWebView? Как изменить соотношение сторон камеры в Xamarin iOS? Как правильно использовать Amazon Cognito iOS SDK с Swift 3? Настройка заголовка позиции навигации в модальном виде Приложение iPhone не будет работать в симуляторе возможность подключения к межсетевому серверу * в osx? * в смешанном режиме ad / hoc / infra? Нет анимации Выбор UITableViewCell @objc протокол сбой быстрый компилятор как установить быстрое поведение по умолчанию для сеанса аудиовизуализации для воспроизведения? iOS: заблокировать другие домены в UIWebView Как освободить контроллер вида в массиве контроллеров представлений? Опция SpriteKit Unwrapping Необязательная ошибка (Swift) Почему API-интерфейсы Xcode (Swift 3) не установлены с iOS 10+, когда целью развертывания является 9,3? APS: отсутствует тема Корпус переключателя для типа перечисления

Как связать выходы через контроллеры представлений?

я создаю приложение и в настоящее время имеет 6 контроллеров представления, теперь в поле зрения контроллера 6 У меня есть текстовое поле, а когда они его редактируют, ему нужно отредактировать метку в контроллере 3, как я могу связать выход, объявленный в viewcontroller6.h в раскадровке что-то в виду контроллер 3? Я знаю, что это сложно, но любая помощь будет действительно замечательной! 🙂 благодаря

Прежде всего, в вашем viewcontroller6 вам нужно #import «viewcontroller3.h». Затем в viewcontroller6.m вы можете создать экземпляр viewcontroller3. Затем у вас есть доступ ко всем данным viewcontroller3. Вы можете установить данные в этом экземпляре viewcontroller3 из viewcontroller6.m и нажать на viewcontroller3, и ваши данные должны быть там.

Хотя, если это метка, вам может потребоваться создать свойство NSString * stringText в вашем viewcontroller3.h и синтезировать его в файле viewcontroller3.m, а затем в контроллере 6, установите эту строку в значение выхода, объявленное в viewcontroller6. И после того, как вы подтолкнули его к просмотру контроллера 3. сделайте что-то вроде label.text = stringText в viewdidload () контроллера view3;

Итак, теперь ваш ярлык в viewcontroller3 должен быть обновлен до того, что было в stringText .., который установлен из viewcontroller6.

Вы не можете подключить выход из vc6 в vc3 в раскадровку. Существует несколько способов передачи данных с vc6 на vc3:

  1. Используйте шаблон делегата (как упоминал Дастин), чтобы передать данные текстового поля с vc6 на vc3. Однако, если ваши контроллеры представлений привязаны последовательно от vc3 до vc4 до vc5 до vc6, использование этого подхода может быть утомительным.

  2. Используйте общий экземпляр (одноточие). Я использую код здесь . Я бы рекомендовал этот подход, если у вас есть достаточно большого количества данных для передачи.

  3. Используйте NSUserDefault для запоминания данных текстового поля и при отображении метки в vc3, прочитайте значения, используя [NSUserDefaults standardUserDefaults]. Хорошо, если у вас есть только очень мало данных для прохождения. Другим преимуществом этого метода является то, что вы можете запомнить эти данные для следующего запуска, и метка в vc3 может отображаться правильно, прежде чем текстовое поле в vc6 будет показано пользователю для ввода.

Я уже ответил на подобные вопросы:

Пример: делегаты .

Быстрый ответ заключается в том, что вы не можете «связать» выход в vc6 с чем-то в vc3, как вы бы с контролем сопротивления в IB. Лучший способ выполнить то, что вы хотите, – это шаблон делегата, который я описываю в связанном вопросе.

Это требует немного дополнительной работы, но это очень важный навык.