2013-07-30 1 views
0

У меня есть класс viewcontroller для моего единственного текущего представления и другого класса со статическими методами для моей математической логики. Класс ViewController имеет IBOutlet для метки. Как я могу ссылаться на эту розетку из функций моего класса Logic?Как получить доступ к выходам главного контроллера представления из логического класса?

ответ

1

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

Что бы я рекомендовал, либо имеет логический класс, возвращающий значения, либо контроллер обновляет метку по мере необходимости, либо если она связана с фоновой обработкой, которая не возвращается сразу, используйте шаблон делегата. Таким образом, логический класс будет информировать контроллер, когда данные будут готовы или вычисления будут завершены, а затем контроллер может обновить интерфейс по мере необходимости.

Посмотрите в IOS протоколы, чтобы определить структуру класса делегата :)

0

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

Например, если у вас кнопку Calculate в нижней части вашей точки зрения, что пользователь краны, кран должен быть обработан ViewController. ViewController вызовет функцию в вашем классе Logic, который может вернуть значение. Затем значение ViewController примет это значение и задает его как текст метки. Вот фрагмент кода, который иллюстрирует идею:

- (IBAction) calculateSomeValue: (id) sender { 
    int result = [Logic calculateValue]; 
    [self.label setText: [NSString stringWithFormat: @"Your result is: %d", result]]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^