2014-04-22 5 views
0

NSProgressIndicator의 값을 콘센트가 정의 된 클래스와 다른 클래스를 통해 업데이트해야합니다.다른 클래스의 콘센트 편집 - 코코아

에스 :

  • 클래스 A.h에서이 나는 NSProgressIndicator에 대한 출구를 정의하고 연결합니다.
  • 클래스 A.m에는 지시자의 doubleValue를 업데이트하는 메서드가 있습니다.
  • 클래스 A에서 클래스 A의 메서드를 통해 메서드를 호출하지만 은 아무 것도 발생하지 않습니다..

은 내가 잘를 작동 클래스 내에서 같은 방법 를 호출 Istead합니다.

무엇이 누락 되었습니까?

//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.. 
} 

이상한 것은 내가 콘센트가 정의 된 클래스 A, 내 -(void)update_indicator:(double)value를 호출하는 경우가 호출되고 있지만, 진행 표시 줄이 표시되지 B에서 내가 그것을 호출하는 경우, 그것이 잘 작동한다는 것입니다.

+1

에서 다른 클래스에 대한 참조를 잠금을 가져 가라. – usain

+0

무엇을 하시겠습니까? 나는 콘센트를 설정하고 그것을 위해 속성을 선언하고 신티 화했다. 문제를 찾을 수 없습니다 .. –

+0

에 대한 게시물 코드 classB는 classA에 대한 참조를 얻습니다 –

답변

0

A가 응용 프로그램의 대리자 클래스 인 경우 새 인스턴스를 만드는 대신 [[NSApplication sharedApplication]delegate]을 사용하여 좋은 인스턴스를 얻을 수 있습니다.

그렇지 않으면 클래스 A를 싱글 톤으로 설정해야합니다.

하지 인터페이스를 제어하는 ​​객체하기 위해, 객체 클래스 B에 아마 당신은이 예 http://www.galloway.me.uk/tutorials/singleton-classes/

+0

절대적으로 완벽합니다, 감사합니다! 이게 내 문제를 해결했습니다! –