Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用多个自定义UITableViewCells_Ios_Objective C_Uitableview - Fatal编程技术网

Ios 使用多个自定义UITableViewCells

Ios 使用多个自定义UITableViewCells,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我正在尝试实现分组样式的UITableView,如Contact apps detailedView。我希望最上面的单元格是透明的,并且在底部有一个UISegemtedControl 当我尝试创建两种不同类型的自定义单元格时,仅加载第一种类型的单元格,即使我使用了两种不同的单元格标识符 希望得到高级官员的指导。或者是关于同一主题的一些好的教程提示 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPa

我正在尝试实现分组样式的UITableView,如Contact apps detailedView。我希望最上面的单元格是透明的,并且在底部有一个UISegemtedControl

当我尝试创建两种不同类型的自定义单元格时,仅加载第一种类型的单元格,即使我使用了两种不同的单元格标识符

希望得到高级官员的指导。或者是关于同一主题的一些好的教程提示

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    /*
    UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
    backView.backgroundColor = [UIColor clearColor];
    cell.backgroundView = backView;
    [backView release];
    */

    static NSString *cellIdentifier1 = @"DetailCellStyle1";
    static NSString *cellIdentifier2 = @"DetailCellStyle2";

    if (indexPath.section == 0) {

        // Load from nib
        DetailCellViewController *cell = (DetailCellViewController *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"DetailCellView" 
                                        owner:nil 
                                        options:nil];

            for (id currentObject in topLevelObjects) {
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (DetailCellViewController *) currentObject;
                    break;
                }
            }
        }

        return cell;
    }
    else  {
        // Load from nib
        DetailCellViewController2 *cell = (DetailCellViewController2 *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier2];
        if (cell == nil) {
            NSArray *topLevelObjects = [[NSBundle mainBundle]
                                        loadNibNamed:@"DetailCellView" 
                                        owner:nil 
                                        options:nil];

            for (id currentObject in topLevelObjects) {
                if ([currentObject isKindOfClass:[UITableViewCell class]]) {
                    cell = (DetailCellViewController2 *) currentObject;
                    break;
                }
            }
        }

        return cell;
    }

    return nil;
}

嗯,老实说,我也不确定,但是,加载调用只被认为是有效的,当单元格为nil时,可能尝试将第二个作为
if(cell==nil)
调用的else-in加载。。。因为在代码的末尾,您再次将其设置为零。。。因此,可能:-)

您通过在“DetailCellView”nib中获取类型为
UITableViewCell
的第一个对象,以完全相同的方式加载单元1和单元2。因此,在这两种情况下得到的单元格都是相同的。

您的
numberOfsectionsTableView:
方法返回什么?好的,我假设您可能只有一个包含两行的节。。。再次查看您的代码,我注意到您以完全相同的方式加载单元1和单元2,方法是在“DetailCellView”nib中获取类型为
UITableViewCell
的第一个对象。因此,在这两种情况下,你得到的是同一个细胞。@omz为做这件事的伙伴干杯。将其作为答案发布,我将接受。我已添加我的评论作为答案,谢谢。因此,我误读了您的代码,在您的第一部分中,您希望有不同于其他部分的单元格。。。那么,您的不同nib的名称是什么样的呢?因为,您告诉加载nib,两次都要查找“DetailCellView”