2013-06-20 7 views
0

KVO의 작은 데모를 만듭니다. 내 지식에 따라 KVO 속성 값이 변경 될 때 알림을 사용합니다. UIStepperKVO을 구현하고 싶습니다. 사용자가 UIStepper 값을 변경하면 알려 드리고 싶습니다. 다음과 같이 몇 가지 코드를 작성했습니다.UIStepper에서 KVO를 구현하는 방법

ViewController.h

@interface ViewController : UIViewController 
{ 
    IBOutlet UIStepper *stepper; 
} 

@property NSInteger intToObserve; 

@end 

ViewController.m

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize intToObserve; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    stepper.minimumValue = 0; 
    stepper.maximumValue = 1000; 
    [self addObserver:self forKeyPath:@"intToObserve" options:NSKeyValueObservingOptionNew context:nil]; 
} 

- (IBAction)valueChanged:(UIStepper *)sender 
{ 
    double value = [sender value]; 
    intToObserve = value; 
} 

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    NSLog(@"Notification Received"); 
} 
@end 

문제는 내가 쳤을 때 플러스 버튼 스테퍼 값이 변경하지만 내 알림 방법은 어떤 통지를받지 않았거나 심지어 내가 거기에 브레이크 포인트 설정되어 있지만 컨트롤이다 거기에 가지 않는다. 의미는 -(void)observeValueForKeyPath이 호출되지 않음을 의미합니다.

제 생각에는 무엇이 잘못되었거나 다른 해결책이 무엇인지 제안 해주십시오.

감사합니다.

답변

1

setter 메서드를 통해 변경해야합니다. 그렇지 않으면 알림이 실행되지 않습니다. ... 작동 ....

self.intToObserve = value; 
+0

좋은 일에

intToObserve = value; 

도움을 주셔서 감사를 변경합니다. –

+0

한 가지 더 물어보십시오. 통지 방법에서 새로운 변경 값을 얻으려면 어떻게해야합니까? 정수로 새로운 스테퍼 값을 얻을 수 있습니까 ?? –

+0

모든 정보가 변경 사전에 있습니다. 자세한 정보는 문서를 참조하십시오. – borrrden