如何根据“if”条件创建对象的不同子类

时间:2014-05-20 03:48:07

标签: ios uitableview

我在一个Controller中有2个UITableViews。每个表都有自己的单元原型,具有UITableViewCell的不同子类:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    if(tableView == self.commentsTable){
        CommentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CommentCell"];        
        cell.message.text = @"test";
    }else if(tableView == self.paramsTableView){
        RealtyParamCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RealtyParamCell"];
        cell.label.text = @"test2";        
    }

    return cell;
}

如果我这样做,我在最后一行return cell;收到错误:“使用未定义的标识符单元格”但我无法定义cell在开始时:

UItableViewCell *cell;
if(tableView == self.commentsTable){
  <...>
}

因为我需要精确的单元格 - CommentCellRealtyParamCell

2 个答案:

答案 0 :(得分:5)

好吧,你仍然可以在开头

定义cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    UItableViewCell *cell;
    if(tableView == self.commentsTable){
        CommentCell *commentCell= [tableView dequeueReusableCellWithIdentifier:@"CommentCell"];        
        commentCell.message.text = @"test";
        cell = commentCell;
    }else if(tableView == self.paramsTableView){
        RealtyParamCell *realtyParamCell = [tableView dequeueReusableCellWithIdentifier:@"RealtyParamCell"];
        realtyParamCell.label.text = @"test2";        
        cell = realtyParamCell;
    }

    return cell;

答案 1 :(得分:3)

试试这个: -

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    if(tableView == self.commentsTable){
        CommentCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CommentCell"];        
        cell.message.text = @"test";
        return cell;
    }else if(tableView == self.paramsTableView){
        RealtyParamCell *cell = [tableView dequeueReusableCellWithIdentifier:@"RealtyParamCell"];
        cell.label.text = @"test2";
        return cell;
    }else{
        return nil;
    }
}