2012-01-27 2 views
0

У меня есть объект data класса EquationData. У меня также есть пользовательский tableviewcell (balanceCell), который имеет в качестве подчиненного поля пользовательское текстовое поле (balanceCell.leftView). Текстовое поле имеет свойство типа NSMutableString equationOrder, которое изменяется, когда пользователь вводит текст. Я хочу, чтобы data получал уведомления, поскольку к equationOrder добавлено больше объектов.observer не принимает сообщения для keyPath в KVO

Что я имею в контроллере представления

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    equationCell = (EquationCell *) [tableView dequeueReusableCellWithIdentifier:@"equationCell"]; 

    if (equationCell == nil) { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"EquationCell" owner:self options:nil]; 
     equationCell = (EquationCell*) [nib objectAtIndex:0]; 

     [equationCell.leftView addObserver:data forKeyPath:@"equationOrder" options:NSKeyValueObservingOptionNew context:nil]; 
    } 

    return equationCell; 
} 

Что я имею в реализации Дейты

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
if ([keyPath isEqualToString:@"equationOrder"]) 
NSLog(@"called"); 

} 

Однако «под названием» не отображается на экране. Я попытался использовать другие переменные для data, чтобы наблюдать, и я попытался изменить equationOrder от свойства до переменной.

Как получить data для получения уведомлений как equationOrder? (Я убедился, что объекты фактически добавлены в уравнениеOrder)

ответ

1

При изменении equationOrder обязательно используйте аксессоры (или установите?). См. this question.

Смежные вопросы