Связь между контроллерами представления - PullRequest
1 голос
/ 17 января 2010

один из моих контроллеров представления имеет несколько переключателей UIS, и я хочу, чтобы другой контроллер представления мог получить доступ к значениям переключателей UIS для операторов If / и. Как мне сделать это в Objective-C?

Ответы [ 2 ]

1 голос
/ 17 января 2010

Это плохая идея, так как она создаст ненужную зависимость между контроллерами представления.

Если вы все еще хотите это сделать, просто передайте ссылку на первый контроллер вида с переключателями на второй контроллер вида. Затем в вашем втором контроллере представления просто получите доступ к соответствующему свойству UISwitch on.

Однако вместо того, чтобы идти по этому пути, я настоятельно рекомендую вам создать собственный класс для хранения логического состояния каждого переключателя UIS. Экземпляр этого класса может быть либо одноэлементным, либо содержаться в делегате приложения. Посмотрите этот ответ , чтобы узнать, как это сделать с обоими подходами.

Пользовательский класс лучше, потому что UISwitch - это просто способ представления некоторого свойства в вашей модели данных. И если завтра вы заменили UISwitch на другую фантазию контроль, контроллер второго вида все еще должен продолжать работать. Оба контроллера представления имеют ссылку на объект этого пользовательского класса. Всякий раз, когда происходит изменение, первый контроллер обновляет этот объект.

Интерфейс класса может выглядеть примерно так:

@interface DataValues : NSObject {
    BOOL first;
    BOOL second;
    BOOL third;
}

@property BOOL first;
@property BOOL second;
@property BOOL third;
0 голосов
/ 17 января 2010

Вы, вероятно, не хотите этого делать.Если вы хотите, чтобы второй ViewController имел другое поведение в зависимости от переключателей, добавленных в первый, вам просто нужно привязать переключатели к пользовательским настройкам по умолчанию, которые можно прочитать в любом месте вашего приложения.

http://icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/

...