2011-05-13 95 views
9

我將一些Objective C代碼轉換爲C#以用於Monotouch iPhone應用程序。將Objective C轉換爲C# - 這段代碼的等價物是什麼?

在Objective C,以下等價條件測試:

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

細胞是UITableViewCell

在C#中,我想用(到目前爲止),以測試相同的條件如下:

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

是客觀的C代碼的理解是正確的,即它測試的cell類型? C#中的等價物是什麼?

+0

酷!我不知道你可以用C#開發iPhone。 – Cheeso 2011-05-13 17:57:20

+0

查看Monotouch - 太棒了! – Ryan 2011-05-13 17:58:40

+0

@Cheeso,請參見[MonoTouch](http://monotouch.net/) – 2011-05-13 17:59:00

回答

9

看起來不錯,除非UITableViewCell繼承自UIView

在這種情況下,你需要

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

好吧,這不是UITableViewCell是否繼承自UIView,而是背景視圖是否從UIView繼承,它必須分配給cell.BackgroundView。所以你需要使用這裏提供的代碼。 – 2011-05-13 18:02:55

2

正確的方法來測試在Objective-C型是這樣的:

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

如果你想測試明確會員,你可以這樣做:

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

太棒了,我看過其他的例子,也推薦這種檢查方式。那麼問題是,'if([cell.backgroundView class]!= [UIView class])'檢查了什麼? – Ryan 2011-05-13 18:08:35

+0

@Ryan Bates:基本上是「isNotMemberOfClass」(如果存在這樣的方法);它也相當於'![view isMemberOfClass:[UIView class]]' – 2011-05-13 18:36:15