在滚动时创建uitableview单元格

时间:2012-09-09 14:21:37

标签: objective-c ios5 ios4 uitableview

我正在使用uitableview,我在使用此代码时遇到了cellforrow委托中的问题

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"mycell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
    cell =  (CustomCell *)[topLevelObjects objectAtIndex:2];
    cell.btn_Selected.hidden=YES;
    cell.btn_Selected.tag=indexPath.row+1;

    [array_btnContainer addObject:cell.btn_Selected];

}

我的问题是,当我运行应用程序时,它会加载我的表格视图并创建单元格,但是当我滚动我的表格视图时,它会再创建一个单元格,为什么???? 它必须重用已经创建的单元格而不是输入(cell == nil)块但是当我滚动它时创建一个单元格并重用其他单元格为什么????我被困了

2 个答案:

答案 0 :(得分:0)

在CustomCell.m中,您必须覆盖以下方法。

-(NSString*) reuseIdentifier{
       return @"mycell";
 }

答案 1 :(得分:0)

这可以通过以下步骤来实现

  1. 在.h文件中创建一个CustomCell的引用,用于显示tableview,它叫做ShowTableView.h。 IBOutlet CustomCell * cell;

  2. 转到CustomCell.xib并选择文件所有者,然后将类属性设置为ShowTableView。

  3. 使用CustomCell附加单元格引用

  4. 选择CustomCell,然后使用mycell

  5. 设置属性标识符值
  6. 现在转到ShowTableView.m文件和cellForRowAtIndexPath方法放置此代码:

     -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:      (NSIndexPath *)indexPath
    {
    
    static NSString *kCellIdentifier = @"mycell";
    cell =(CustomCell *)[tableView dequeueReusableCellWithIdentifier:kCellIdentifier];
    if (!cell)
    {
    [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];      
    }  
    }
    
  7. 现在它将重复使用您之前的单元格