получить доступ к переменной или методу контроллера из класса представления subview - PullRequest
0 голосов
/ 10 февраля 2011

Добрый вечер, Вот проблема, [self.view addSubview: pauseView]; перед загрузкой pauseView поверх текущего представления BOOL isPaused устанавливается в false, а затем появляется подпредставление. я пытаюсь изменить значение переменной на false, не используя pauseview, но так как он не в текущем классе, я не могу это сделать Я знаю, что эта тема уже рассмотрена в stackoverflow, но я все еще не могу решить свою проблему. Если я смогу решить эту проблему, она решит такую ​​же проблему в 3 других моих приложениях.

С уважением, Sonic555gr

Ответы [ 2 ]

0 голосов
/ 10 февраля 2011

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

Если вы настаиваете на манипулировании переменной из UIView, вам нужно передать ссылку на ваш viewController в pauseView при его инициализации.

Итак, в вашем классе PauseView вы бы создали собственный инициализатор:

-(id)initWithFrame:(CGRect)frame andViewController:(id)vc {
   self = [super initWithFrame:frame];
   if (self) {
       // Any other custom initialisation here
   }
}
0 голосов
/ 10 февраля 2011

Определите isPaused как свойство в классе, который определяет isPaused (назовем его MasterView):


// inside MasterView.h
@property (nonatomic,assign) BOOL isPaused;

Затем сделайте ваше подпредставление pauseView пользовательским подклассом UIView (давайте назовем его PauseView) и в этом подклассе определимсвойство с именем master типа MasterView:


// inside PauseView.h
@property (nonatomic,assign) MasterView *master

Затем, когда вы выделяете / инициализируете свой pauseView, просто установите это свойство:


// somewhere inside MasterView.m
PauseView *pauseView = [[PauseView alloc] initWithFrame:frame];
pauseView.master=self;

Наконец, в вашем классе PauseView, в точке вашегокод, где вы хотите изменить свойство isPaused, сделайте это:


// somewhere in PauseView.m
master.isPaused=YES
...