我试图了解在Monotouch中使用ResponsdsToSelector的模式。例如,以下翻译无效。 (LayoutMargins用于在iOS 8中设置单元格缩进)
objective-c :
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}
到Monotouch
if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins")))
this.TableView.LayoutMargins = UIEdgeInsets.Zero;
我很确定我在命名“setLayoutMargins”时遇到问题。我也尝试过“LayoutMargins”。谁能帮忙1)修正此陈述,2)帮助我理解命名约定/模式?
谢谢!
最佳答案
选择器在ObjC中以:
结尾,并且也需要在C#中使用,即:
if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins:")))
注意:额外的
:
表示调用选择器时需要一个参数。这就是set*
拥有它而getter没有的原因。检查选择器的另一种方法是使用版本检查。