2011-05-13 11 views
9

Estoy convirtiendo un código de Objective C en C# para usar en una aplicación Monotouch para iPhone.Convertir el objetivo C a C# - ¿Cuál es el equivalente de este código?

En Objective C, la siguiente condición de equivalencia se prueba:

if ([cell.backgroundView class] != [UIView class]) 
    ... do something 

célula es una UITableViewCell.

En C#, me gustaría probar el mismo estado usando (hasta ahora) lo siguiente:

if (!(cell.BackgroundView is UIView)) 
    ... do something 

es la comprensión del código C Objetivo correcta, es decir, se comprueba el tipo de cell? ¿Cuál sería el equivalente en C#?

+0

¡Guay! No sabía que podrías desarrollar para el iPhone en C#. – Cheeso

+0

Echa un vistazo a Monotouch: ¡es genial! – Ryan

+0

@ Cheeso, consulte [MonoTouch] (http://monotouch.net/) –

Respuesta

9

Se ve bien, a menos que UITableViewCell herede de UIView.

en cuyo caso se necesitará

if (cell.BackgroundView.GetType() != typeof(UIView)) 
    ... do something 
+0

Bueno, no es si UITableViewCell hereda de UIView, sino si la vista de fondo hereda de UIView, que debe asignarse a cell.BackgroundView. Por lo tanto, deberá usar el código proporcionado aquí. –

2

La forma correcta para la prueba de tipo en Objective-C es la siguiente:

if ([[cell backgroundView] isKindOfClass:[UIView class]]) { 
    //the backgroundView is a UIView (or some subclass thereof) 
} 

Si desea comprobar la pertenencia explícita, se puede hacer:

if ([[cell backgroundView] isMemberOfClass:[UIView class]]) { 
    //the backgroundView is a UIView (and not a subclass thereof) 
} 
+0

Genial, he visto otros ejemplos que también recomiendan esta forma de comprobación. La pregunta entonces es, ¿qué 'if ([clase de celda.Visión de celda]! = [Clase de UIView])' buscar? – Ryan

+0

@Ryan Bates: eso es básicamente "isNotMemberOfClass" (si tal método existió); también es equivalente a '! [view isMemberOfClass: [UIView class]]' –

Cuestiones relacionadas