Добавьте наблюдателя для логического значения - PullRequest
0 голосов
/ 18 октября 2011

Я пытаюсь добавить наблюдателя к объекту и вызвать его, изменив его логическое значение.

Код: Добавить наблюдателя:

[unitsCellViewController.cell addObserver:self forKeyPath:@"unit" options:0 context:nil];

В объекте, когда текстовое поле имеет видизменяя, я изменю логическое значение и попытаюсь вызвать уведомление:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([string length] != 0)
    {
        NSRange match = [@"0123456789" rangeOfString:string];
        if (match.location == NSNotFound) {
            return NO;
        }
    }

    [self willChangeValueForKey:@"unit"];
    self.on = !on;
    [self didChangeValueForKey:@"unit"];

    return YES;
}

, но это не работает, значение действительно изменилось, но наблюдатель не сработал.Я делаю это правильно?Если нет, как я могу вызвать событие при изменении текстового поля?

1 Ответ

1 голос
/ 18 октября 2011

Вы можете использовать свойство и переопределить установщик

В вашем .h

@property (nonatomic, assign) BOOL myFlag;

В вашем .m

@implementation

@synthesize myFlag = _myFlag;
...
..
.


- (void)setMyFlag:(BOOL)myFlag
{
if(myFlag != _myFlag){
_myFlag = myFlag;
[self postNotification];
}
}


-(void)postNofitication
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"nameOfNotification" object:nil];
}

И вы выполняете действиетолько когда значение флага изменится.

Надеюсь, это поможет.

...