2010-04-09 80 views
1

我正在使用蘋果的自定義表格視圖單元格代碼並修改單元格視圖內的drawRect代碼,看起來像我想要的。我已經改變它有一些UILabels以及UIProgressView。自定義UITableViewCell不正確隱藏視圖

如果單元格正在構建的數據沒有特定字段,我想隱藏UIProgressView。這會工作一段時間,但是當一個單元格從滾動重新排序時,即使將其設置爲hidden = YES,進度視圖也會再次開始顯示。我試過只是不創建ProgressView,除非數據在那裏,也沒有工作。

我想答案是在[self setNeedsDisplay]中,但似乎沒有幫助。

下面是從該的drawRect繼續顯示在progressview代碼:

UIProgressView *c1Progress = [[UIProgressView alloc]initWithFrame:CGRectMake(20.0, 70.0, 280.0, 12.0)]; 
float iProgress = (value/target); 
c1Progress.progress = iProgress; 
if (!dataExists) { 
    c1Progress.hidden = YES; 
} 
[self addSubview:c1Progress]; 
[c1Progress release]; 

回答

1

你肯定不希望在drawRect此代碼。您應該分配/初始化您的UIProgressView並將其作爲子視圖添加到您的UITableViewCell子類init方法中(並且一定要在dealloc中釋放它)。

設置c1Progress.progressc1Progress.hidden一些方法只調用時valuetarget,或dataExists變化應該去的邏輯。如果你對於有問題的數據/值有一個setter方法,那將是一個好的選擇。

+0

謝謝,這確實它。我將c1Progress移動到一個類變量,在init方法中實例化它並在數據設置器方法中設置值。這是我在自定義tableviewcell編程方面的第一次嘗試,我想確保自己正確地做到了這一點,所以我很好地滾動表格! – adamweeks 2010-04-09 14:09:07

1

檢查dataExists的價值......並把它打印在的NSLog,如果這段代碼執行每次...從drawRect中刪除此...初始化並釋放它只有一次......

+0

dataExists的值已正確設置,並且設置hidden = YES的代碼確實運行。我在它上面放置了一個斷點,並按預期進行。 – adamweeks 2010-04-09 13:15:01

相關問題