【问题标题】:observer is not receiving messages for keyPath in KVO观察者没有收到 KVO 中 keyPath 的消息
【发布时间】:2012-01-27 20:45:52
【问题描述】:

我有一个 dataEquationData 的对象。我还有一个自定义 tableviewcell (balanceCell),它有一个自定义文本字段 (balanceCell.leftView) 作为子视图。文本字段有一个 NSMutableString equationOrder 类型的属性,随着用户输入文本而改变。随着更多对象添加到equationOrder,我希望data 接收通知。

我在视图控制器中有什么

- (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 从一个属性更改为一个变量。

equationOrder 更改时,如何让data 接收通知? (我已确保对象实际上已添加到 equationOrder)

【问题讨论】:

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


    【解决方案1】:

    确保在更改 equationOrder 时使用数组(或设置?)访问器。详情请见this question

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多