2012-01-19 117 views
0

我有一個在IB中創建的自定義UITableViewCell。 enter image description here我可以使用屬性來確定對象的類嗎?

我所有的細胞都會有這樣的總體佈局。但是,在某些單元格中,這兩個白色視圖將是classA,而在其他單元格中,這兩個白色視圖將是classB。 (UIView的兩個子類)。我試圖使用屬性來分配兩個視圖的特定子類。

予設定的兩個視圖作爲小區

@property (nonatomic, retain) IBOutlet UIView *leftView; 
@property (nonatomic, retain) IBOutlet UIView *rightView; 

而在我的視圖控制器,其中我使表視圖,我試圖創建類型subclassA的對象,並作爲leftView分配給它的屬性,使得leftView將是類型subclassA。在其他單元格中,我將創建一個B類的對象並將其設置爲leftview,以便在這些單元中,左視圖將是子類b。

//equationTextField is a subclass of UIView 
EquationTextField *textField = [[EquationTextField alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; // arbitrary frame 
cell.leftView = textField; 

但是,此代碼不起作用。有沒有更好的方法來分配我的意見的具體類別?

+0

目前尚不清楚你的問題是什麼 - 你不開心定義你的左視圖,右視圖的UIView? – jrturton

+0

我有兩個UIViews,subclassA和subclassB的子類。在表的一些單元格中,這兩個視圖需要是子類A。在其他單元格中,視圖需要是子類B.因爲我在IB中創建了視圖,所以我需要在代碼中引用它們,所以我創建了UIView類型的屬性,因爲這兩個子類都可以分配給該屬性。我需要一種方法來聲明我是否希望左視圖是子類A還是子類B – Mahir

+0

這沒有問題(除非我誤解了你的問題)。根據索引路徑,在你的cellForRow方法中執行設置並使用你需要使用的任何類。 – sosborn

回答

0

你在做什麼是好的,但你可能要調查有兩種不同的細胞類型(與您的自定義視圖已嵌入),以提高性能 - 每一個可能有你會選擇取決於指數路徑上的不同重用標識符。每次在cellForRowAtIndexPath中創建視圖從來都不是一個好主意。

你甚至可以從同一個細胞中獲得兩種類型,只是用不同的重用標識符,並添加正確的子類首先創建細胞,只有當。

0

您可以檢查,看看是否cell.leftView是你EquationTextField如果需要的話:

if([cell.leftView isKindOfClass:[EquationTextField class]]) { 
    NSLog(@"View is EquationTextField"); 
} 
else { 
    NSLog(@"View is not EquationTextField"); 
} 
+0

p.s.你可能要投你的對象實例: cell.leftView =(的UIView *)文本框; –

相關問題