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。我怎么听这个?
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];
}