2012-10-01 47 views
1

我班有。基於所選擇的指標,我重裝我的TableView行中的實現代碼如下圖像disppears手動

-(void)viewWillAppear:(BOOL)animated{ 

    [super viewWillAppear:YES]; 

    [self.stopsTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath 

    indexPathForRow:rowNum inSection:0]] withRowAnimation:UITableViewRowAnimationFade]; 


} 

的rowNum將被設置爲:=的rowNum indexPath.row

基於此,我爲特定單元格顯示可見的隱藏圖像。這工作正常。但

當我手動滾動我的tableview(即當我小區走出觀點或能見度)我對電池隱藏的圖像消失,因爲了這個rownum值

將會丟失。對此有何幫助?

回答

0

發生這種情況,因爲當電池熄滅知名度,cellForRowAtIndexPath:被再次調用,並根據cellIndentifier

新小區創建或使用現有的小區那段時間。因此,如果您使用較少的數量細胞可以對每個小區分配不同的cellIdentifier秒,那麼即使電池熄滅的知名度,它仍然保持不變細胞

你可以做到這一點如下:cellForRowAtIndexPath:

NSString *str = [NSString StringWithFormat:@"cell%d",indexpath.row]; 

cell = [UITableView dequeReusableCellWithCellIdentifier:str]; 

if(cell == nil) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:str]; 
} 

return cell ; 

這絕對會工作!

0

雖然我不知道爲什麼你在viewWillAppear中這樣的代碼,這就是我理解

  • 你改變單擊的單元格中顯示
  • 您的問題是,當您滾動,細胞的狀態失去

爲此,我可以建議如下:

在您的視圖控制器,聲明屬性(如NSMutableArray)塔t存儲每個單元格的狀態。而在cellForRowAtIndexPath方法,初始化您的小區,其正確的狀態

給你一些背景資料,細胞在重複使用的iOS默認情況下,以提高性能。所以,你從cellForRowAtIndexPath返回的UITableViewCell對象在其他行不斷重複使用。因此,在滾動時單元格上的設置狀態不會保留(同一個對象將用於另一行)。這就是爲什麼你應該保持通過外部屬性,狀態信息,我建議