3
RCT_EXPORT_MODULE()

- (UIView *)view
{
  return [[RNNativeListview alloc] initWithBridge:self.bridge];
}

RCT_EXPORT_VIEW_PROPERTY(rowHeight, float)
RCT_EXPORT_VIEW_PROPERTY(numRows, NSInteger)

每当 js 更新 numRows 时,我想重新加载我的 UITableView。我怎么听这个?

4

2 回答 2

6

我不认为 KVO 是一个好的解决方案。

您可以只覆盖 numRows 属性的设置器:

- (void)setNumRows:(NSInteger)numRows {
    _numRows = numRows;
    [self.tableView reloadData];
}

或者您可以使用 RCT_CUSTOM_VIEW_PROPERTY:

RCT_CUSTOM_VIEW_PROPERTY(numRows, NSInteger, RNNativeListview) {
    view.numRows = [RCTConvert NSInteger:json];
    [view.tableView reloadData];
}
于 2017-02-23T10:44:53.840 回答
0

我使用观察者解决了它。

- (instancetype)initWithBridge:(RCTBridge *)bridge {
  [self addObserver:self forKeyPath:@"self.numRows" options:NSKeyValueObservingOptionNew context:nil];
  return self;
}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
  [self.tableView reloadData];
}
于 2017-02-17T16:31:44.443 回答