Редактировать аутлет из другого класса - Какао
Мне нужно обновить значение NSProgressIndicator через класс, отличный от того, где был определен выход.
Es:
- В классе Ah я определяю выход для NSProgressIndicator и связываю его.
- В классе Am у меня есть метод для обновления doubleValue индикатора.
- В классе B.m, через класс A, я вызываю метод, но ничего не происходит.
Если я вызываю тот же метод в классе A, он работает нормально.
Что мне не хватает?
//REQUESTED CODE:
//Class A (AppDelegate)
A.m
//Other stuff
-(void)update_indicator:(double)value {
//Method that updates the value of the indicator
[progress_indicator setDoubleValue:(double)value];
[progress_indicator setNeedsDisplay:YES];
}
//Class B (Drawing class - subclass of NSView)
B.m
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
//Create istance;
A *istance = [[A alloc] init]; //Alloc class A and init it
[A update_indicator:50.0];
//Other code..
}
Странно то, что если я позвоню -(void)update_indicator:(double)value
в классе A, где определен выход, он работает нормально, если я вызываю его из B, он вызывается, но индикатор выполнения не отображается.
1 ответ
Решение
Если A является классом делегата приложения, вы можете получить хороший экземпляр, используя это [[NSApplication sharedApplication]delegate]
вместо создания нового экземпляра.
В противном случае вы должны сделать класс А синглтоном.
Взять блокировку на этом примере http://www.galloway.me.uk/tutorials/singleton-classes/