2014-09-22 10 views
5

Sto cercando di capire il modello per l'utilizzo di ResponsdsToSelector in Monotouch. Ad esempio, la seguente traduzione non funziona. (LayoutMargins viene utilizzato per impostare il rientro delle cellule in iOS 8)Come utilizzare iOS RespondsToSelector in Monotouch?

Objective C:

if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { 
    [tableView setLayoutMargins:UIEdgeInsetsZero]; 
} 

di MonoTouch

if (this.TableView.RespondsToSelector(new Selector("setLayoutMargins"))) 
    this.TableView.LayoutMargins = UIEdgeInsets.Zero; 

Sono abbastanza sicuro Ho solo un problema con il mio denominazione " setLayoutMargins". Ho provato anche "LayoutMargins". Qualcuno può aiutare 1) correggere questa affermazione e 2) aiutarmi a capire la convenzione/modello di denominazione?

Grazie!

risposta

13

Sono abbastanza sicuro Ho solo un problema con il mio denominazione "setLayoutMargins"

Il selettore si conclude con una : in objC e ha bisogno di avere a in C# troppo, vale a dire:

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

Nota: questo extra : indica che è richiesto un argomento quando si chiama il selettore. Ecco perché lo set* lo ha mentre il getter no.

Un'alternativa al controllo dei selettori consiste nell'utilizzare un controllo di versione.

+0

Grande, non mi meraviglia che non potrei averlo. Non ho mai pensato di aggiungere ":". Grazie per la risposta rapida! – Ender2050

Problemi correlati