0
我想翻譯這個代碼志願在C#
[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
? - 我如何得到這個工作?