如何在Monotouch中使用iOS RespondsToSelector?

时间:2014-09-22 18:26:11

标签: c# ios xamarin.ios xamarin

我正在尝试理解在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)帮助我理解命名约定/模式?

谢谢!

1 个答案:

答案 0 :(得分:14)

  

我很确定我的命名问题“setLayoutMargins”

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

if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins:")))

注意:额外的:表示调用选择器时需要一个参数。这就是为什么set*拥有它而吸气剂没有。

检查选择器的另一种方法是使用版本检查。