Я недавно занимался программированием Objective-C и только что вернулся к дальнейшему развитию iPhone. Я много программировал с использованием MVC на других языках/фреймворках, но я просто хочу убедиться, что я правильно использую MVC в своем iPhone Development.iPhone: Правильное использование контроллера View and View
Я создал новое приложение для iPhone, которое создает два вида: MainView и FlipsideView. Оба имеют контроллер (FlipsideViewController и MainViewController) и собственный XIB-файл.
То, что я делал, это перенос переменных IBOutlet UIControl myControl
в файлы MainView.h или FlipsideView.h, а затем привязка элементов управления в Interface Builder к этим переменным. Затем я помещал любые методы IBAction SomeAction myAction
в файлы MainViewController.h и FlipsideViewController.h и привязывал события к этим методам в Interface Builder.
Это кажется концептуально правильным, но, похоже, вызывает проблемы. Скажем, у меня есть кнопка, которая при нажатии на нее меняет текст ярлыка. Таким образом, контроллер не знает, что имя переменной метки в обработчике событий 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
, и я использую его неправильно.
«Итак, у контроллера нет понятия того, какое имя переменной метки находится в обработчике событий OnTouchUp для моей кнопки. Поэтому я создаю для нее @property. Но поскольку свойство MainViewController.view не является типа MyView, я получаю предупреждения или ошибки всякий раз, когда пытаюсь получить доступ к этим свойствам из контроллера представления ». - пожалуйста, не могли бы вы разместить соответствующий код? –