2010-01-21 41 views
2

我有一個不同的問題。在不是UITableViewDelegate的函數中重用UITableViewCell

我創造我的TableViewCells像:


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell; 
    UILabel *label = nil; 

    NSString *cellIdentifier = [NSString stringWithFormat:@"Cell_%i", indexPath.row]; 

    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier] autorelease]; 
     //cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier]; 
     label = [[UILabel alloc] initWithFrame:CGRectZero]; 
     [label setLineBreakMode:UILineBreakModeWordWrap]; 
     [label setMinimumFontSize:FONT_SIZE]; 
     [label setNumberOfLines:0]; 
     [label setFont:[UIFont systemFontOfSize:FONT_SIZE]]; 
     [label setTag:1]; 


     [[cell contentView] addSubview:label]; 

    } 
return cell; 
} 

正如你看到的,我有細胞樣標識符「Cell_0,Cell_1等」

,並在一個函數,而不是一個TableView中的方法,我想通過調用它們的標識符來使用這些單元格。我這樣做:


UITableViewCell *cell = [myTableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"Cell_%i", myCellID]]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:[NSString stringWithFormat:@"Cell_%i", myCellID]]; 
    } 
UILabel *label = (UILabel*)[cell viewWithTag:1]; 

我不能使用這樣的?

我想改變單元格的顏色,我嘗試訪問,但我不能。細胞不是零,但標籤總是零。我該怎麼辦?

我該怎麼理解它的單元格,我想要還是空的單元格?

回答

1

好吧我已經解決了我的問題,通過填充數組中的所有indexPaths,同時調用單元格,從該數組調用索引路徑。謝謝你的答案

1
NSString *cellIdentifier = [NSString stringWithFormat:@"Cell_%i", indexPath.row]; 

cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

這破壞了細胞再利用的全部目的!

對於「看起來」相同(即具有相同子視圖)的所有單元,您應該使用相同的單元標識符,並且只更改它們的內容。

要獲取您爲特定行創建的單元格,請使用[tableView cellForRowAtIndexPath:indexPath]

+0

我想我不能告訴我的問題很好。 我有一個名爲getCellToBeModified的方法。裏面有 沒有indexPath。 但我需要在此方法內使用我的單元格。所以,我知道我的CellIDS是在一個可變陣列中,我試圖通過使用以下方式訪問該單元格: UITableViewCell * cell = [myTableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@「Cell_%i」,myCellID]]; if(cell == nil)cell = [[UITableViewCell alloc] initWithFrame: } 我需要一個無委託方法的解決方案 – 2010-01-21 22:03:42

相關問題