Единственные представления, о которых должен беспокоиться MainViewController, - это те, которыми он владеет; он не должен пытаться получить доступ к иерархии представлений, управляемой SetupViewController. Аналогично, SetupViewController не должен напрямую изменять представления в графе представлений MainViewController.
Правильный способ сделать то, что вы просите, - это чтобы два контроллера общались друг с другом, либо напрямую, либо через модель данных. Например, предположим, что ваш MainViewController создает экземпляр SetupViewController. В этом случае для mvc
было бы естественным установить себя в качестве делегата svc
, чтобы svc
отправлял ему сообщения типа -setupController:didUpdateTestStringTo:
. Реализация этого метода в MainViewController может затем сохранить новую тестовую строку и обновить ее поле testLabel
.
Другой пример: MainViewController создает экземпляр SetupViewController. SetupViewController содержит поле, в котором пользователь может ввести новое значение для тестовой строки. Перед выходом SetupViewController записывает содержимое этого поля в NSUserDefaults или в другое обычное хранилище данных. Когда элемент управления возвращается в MainViewController, этот объект считывает общие данные и обновляет себя по мере необходимости, включая установку нового значения для testLabel.
Существуют и другие варианты той же темы, но общий поток здесь заключается в том, что ни один контроллер представления не имеет прямого доступа к представлениям, которым он не принадлежит.