Могу ли я передать 'параметр' из Интерфейсного Разработчика, чтобы мой класс ViewController знал, как обрабатывать по-другому? - PullRequest
0 голосов
/ 19 августа 2011

В моем проекте у меня есть представление (определенное в xib), которое является компонентом многократного использования и будет размещено во многих других представлениях. У меня есть класс контроллера представления, разработанный для обработки различных режимов для этого представления.

Мои приложения имеют 3 вкладки, которые в основном используют один и тот же вид, при инициализации с различными параметрами они работают довольно хорошо.Я загружаю это представление из Интерфейсного Разработчика (указав имя NIB и имя класса), но мне придется передавать различные параметры, чтобы мой контроллер представления знал, какой это режим.

Мне интересно, могу ли я определить какой-нибудь «параметр» из Interface Builder, чтобы мой класс контроллера представления мог просто искать и определять себя.Поэтому мне не нужно писать дополнительный код для повторного использования этого пера во многих разных местах?

Ответы [ 3 ]

1 голос
/ 22 августа 2011

Тогда вы могли бы использовать параметр tag в представлении контроллера представления - если вы еще не используете его для чего-то другого.

Затем ваш viewController прочитает тег своего основного вида и соответствующим образом изменит его поведение.

myViewControllersView.tag = i;
0 голосов
/ 23 августа 2011

Я в конечном итоге использую «title» для передачи строки json, и она работает для меня довольно хорошо, я не уверен, есть ли лучший способ сделать это.

0 голосов
/ 19 августа 2011

Я бы посмотрел на создание собственных пользовательских методов init в ваших контроллерах представления и использовал их для инициализации ваших контроллеров представления.

myViewController = [[[myUIViewController alloc] init] initWithParamOne:paramOne andParamTwo:paramTwo];

- (id) initWithParamOne:(NSString *)paramOne andParamTwo:(NSString *)paramTwo {
    self = [super initWithNibName:@"myNib" bundle:nil]; 
    if (self) {
        // code here
    }
}
...