observer没有在KVO中接收keyPath的消息

时间:2012-01-27 20:45:52

标签: objective-c ios key-value-observing

我有一个类data的对象EquationData。我还有一个自定义tableviewcell(balanceCell),它有一个自定义文本字段(balanceCell.leftView)作为子视图。 text字段具有NSMutableString equationOrder类型的属性,该属性随用户在文本中键入而更改。我希望dataequationOrder添加更多对象时收到通知。

我在视图控制器中拥有的内容

- (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收到通知? (我确保对象实际上已添加到equationOrder中)

1 个答案:

答案 0 :(得分:1)

确保在更改equationOrder时使用数组(或设置?)访问器。有关详细信息,请参阅this question