如何在Monotouch中使用iOS RespondsToSelector?

End*_*050 5 c# xamarin.ios ios xamarin

我正在尝试理解在Monotouch中使用ResponsdsToSelector的模式.例如,以下翻译不起作用.(LayoutMargins用于在iOS 8中设置单元格缩进)

目标C:

if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
    [tableView setLayoutMargins:UIEdgeInsetsZero];
}
Run Code Online (Sandbox Code Playgroud)

到Monotouch

if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins")))
    this.TableView.LayoutMargins = UIEdgeInsets.Zero;
Run Code Online (Sandbox Code Playgroud)

我很确定我的命名是"setLayoutMargins".我也试过"LayoutMargins".任何人都可以帮助1)修复此声明和2)帮助我理解命名约定/模式?

谢谢!

pou*_*pou 14

我很确定我的命名"setLayoutMargins"有问题

选择器:以ObjC 结尾,并且还需要在C#中输入,即:

if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins:")))
Run Code Online (Sandbox Code Playgroud)

注意:额外:意味着调用选择器时需要一个参数.这就是为什么set*有吸气剂的原因.

检查选择器的替代方法是使用版本检查.