【发布时间】:2014-11-14 13:27:12
【问题描述】:
我想翻译这段代码
[self.tableView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior context:NULL];
还有这个
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"contentSize"]) {
DLog(@"change = %@", change.description)
NSValue *new = [change valueForKey:@"new"];
NSValue *old = [change valueForKey:@"old"];
if (new && old) {
if (![old isEqualToValue:new]) {
// do your stuff
}
}
}
}
到 C#。 (取自Get notified when UITableView has finished asking for data?)
这是我到目前为止的方式:
this.TableView.AddObserver ("contentSize", NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old | NSKeyValueObservingOptions.Prior, null);
和
public override void ObserveValue (NSString keyPath, NSObject ofObject, NSDictionary change, IntPtr context)
{
//base.ObserveValue (keyPath, ofObject, change, context);
if (keyPath == "contentSize") {
NSValue newValue = (NSValue)NSValue.FromObject(change["new"]);
NSValue oldValue = (NSValue)NSValue.FromObject(change["old"]);
//if (newValue && oldValue) {
if(!oldValue.IsEqualTo(newValue)){
// do something here
}
//}
}
}
我遇到的问题:
- 如何将 NSObject 转换为 NSValue?
- 如何检查 NSValue 是否具有有效值?
-
Action<NSObservedChange> observer有什么用? - 我如何让它发挥作用?
【问题讨论】:
标签: c# uitableview xamarin.ios xamarin key-value-observing