2012-06-27 60 views
0

我是新來iphone.I有一個小的疑問是,我有66行的表視圖最初我把進度視圖的所有行,但在viewdidload我其設置爲隱藏的所有這些像下面在tableViewClassShowProgressViewCont如何設置隱藏屬性不爲特定的細胞中的tableView

cell.progressView.hidden = YES; 

這裏(細胞)是在CustomCell class.In的參考這個I類聲明一個進度視圖和setter和getter屬性也可以被設置這裏在這個類

這裏在tableview中有一個下載按鈕在每個cell.If我們點擊o ñ下載按鈕(例如在第66個單元格中)。我們必須將該隱藏屬性移除到該特定第66個單元格的進度視圖。剩餘的65個單元格應該隱藏進度視圖,就像所有單元格一樣。

如果有任何身體知道這個請幫助我....

回答

0

獲取細胞在指數65,然後將其投射到您的自定義單元格

UITableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:64 inSection:0]]; 

YourCustomCell *customCell = (YourCustomCell *)cell; 
customCell.progressView.hidden = NO; 
+0

非常感謝它正在工作 – user1468157

+0

@ user1468157歡迎您,請不要忘記接受:) –

0

首先設置的行號在下載按鈕在CellForRowAtInedexPath

downloadButton.tag = indexPath.row 
    [downloadButton addTarget:self action:@selector(actionDownload:) forControlEvents:UIControlEventTouchUpInside]; 
在actionDownload

,使從button.tag的IndexPath和 「的cellForRowAtIndexPath:」 拿到電池, 終於通過r個更新eloadRowsAtIndexPaths:withRowAnimation:

0

隱藏你的進步鑑於您的自定義單元格的手段使每一個進步視圖的默認屬性爲隱藏,然後你點擊按鈕的方法。

CutomeCell *cell = (CutomeCell *)[[button superview] superview]; 
[cell.progressView setHidden:NO]; 
NSIndexPath *rowToReload = [[self tableView] indexPathForCell:cell]; 
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil]; 
[UITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone]; 

這可以幫助你...

2

你熟悉的表格單元格的概念被重用?

viewDidLoad不適合操作單個單元格的內容。如果桌子很小,它的所有單元格都適合屏幕(兩個方向),它可能會工作得很好。 如果表格中的單元格比屏幕上顯示的單元格更多,那麼最近變得不可見的單元格將被重新使用並再次顯示。 因此,如果屏幕上一次有6個單元格,那麼表格單元號7(有時8)將與單元號相同。 1.

的cellForRowAtIndexPath將是一個更好的地方躲一小區/取消隱藏某些視圖。 如果它是一個自定義單元格,那麼單元格的layoutSubViews也可能是合適的。但是,只有在tableViewController的cellForRowAtIndexPath中,您纔可以輕鬆訪問表格的數據和關聯的單元格。

cellForRowAtIndexPath每當單元格即將變爲可見時調用。使用默認的重用機制來確保合適的單元對象將被重用。這非常簡單。

0

您的模型應該跟蹤每個按鈕點擊的進度。爲了這個答案的目的,假設模型被保存在一個名爲modelInformationArray的屬性中(它將包含與表格中的每個單元格相關的對象數組)

當單擊下載按鈕的單元格時,modelInformationArray是以其對象知道正在爲其處理下載的方式進行修改。

對象在名爲downloadProcessingStarted的成員中報告下載處理。還有很多其他方法可以做到這一點。

得到你的問題的答案...然後取消隱藏進度視圖,你會在你的UITableViewDataSource實現tableView中做如下操作:cellForRowAtIndexPath:。

- (UITableViewCell*)tableView:tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath { 
    YourCustomCell* cell = ... 
    if ([[self.modelInformationArray objectAtIndex:indexPath.row] downloadingProcessingStarted]) 
     cell.progressView.hidden = NO; 
}