我正在尝试理解在Monotouch中使用ResponsdsToSelector的模式。例如,以下翻译不起作用。 (LayoutMargins用于设置iOS 8中的单元格缩进)
目标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)帮助我理解命名约定/模式?
谢谢!
答案 0 :(得分:14)
我很确定我的命名问题“setLayoutMargins”
选择器以ObjC中的:
结尾,并且还需要在C#中输入,即:
if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins:")))
注意:额外的:
表示调用选择器时需要一个参数。这就是为什么set*
拥有它而吸气剂没有。
检查选择器的另一种方法是使用版本检查。