如何通过目标C中的RCT_EXPORT_VIEW_PROPERTY检测属性更改


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。我该如何听?

我不认为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];
}

我使用观察者解决了它。

- (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];
}

相关内容

  • 没有找到相关文章

最新更新