В последнее время я много занимался программированием на Objective-C и только начал заниматься разработкой для iPhone. Я много программировал с использованием MVC на других языках / фреймворках, но я просто хочу убедиться, что я правильно использую MVC в своей разработке для iPhone.
Я создал новое iPhone Utility Application, которое создает два вида: MainView и FlipsideView. Оба имеют контроллер (FlipsideViewController и MainViewController) и собственный файл XIB.
Что я делал, так это помещал переменные IBOutlet UIControl myControl
в мои файлы MainView.h или FlipsideView.h, а затем привязывал элементы управления в Интерфейсном Разработчике к этим переменным. Затем я помещаю любые IBAction SomeAction myAction
методы в файлы MainViewController.h и FlipsideViewController.h и связываю события с этими методами в Интерфейсном Разработчике.
Это кажется концептуально правильным, но, похоже, вызывает проблемы. Скажем, у меня есть кнопка, которая при нажатии изменяет текст метки. Таким образом, контроллер не имеет ни малейшего представления о том, что имя переменной метки находится в обработчике события OnTouchUp для моей кнопки. Поэтому я делаю @property
для этого. Но поскольку свойство MainViewController.view
не относится к типу MyView
, я получаю предупреждения или ошибки, когда пытаюсь получить доступ к этим свойствам из контроллера представления.
Я делаю это правильно? Есть лучший способ сделать это? Если это правильно, как мне правильно работать с этими переменными, не получая предупреждений или ошибок?
Спасибо
Вот код, показывающий, что я делаю:
MainView.h
#import ...
@interface MainView : UIView
{
IBOutlet UILabel* label;
IBOutlet UIButton* button;
}
@property UILabel* label;
@property UIButton* button;
@end
MainViewController.m
-(void) buttonTouchUp:(id) sender
{
self.view.label.text = @"The button was pressed!"; //This gives error because label is not in the view structure or union
[self.view label].text = @"The button was pressed!"; //This gives a warning
}
Я знаю, что могу сделать вид подходящего типа, но это похоже на хакерскую работу.
Я знаю, что могу жить с предупреждением, но предупреждение говорит мне, что я делаю то, чего, вероятно, не должен делать. Я не верю, что SDK заставит меня постоянно делать что-то подобное.
Должно быть, я просто неправильно понимаю, каким должен быть View
, и я неправильно его использую.