Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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
Iphone 情节提要中具有不同标识符和不同高度的两个UITableViewCell_Iphone_Ios_Objective C_Uitableview - Fatal编程技术网

Iphone 情节提要中具有不同标识符和不同高度的两个UITableViewCell

Iphone 情节提要中具有不同标识符和不同高度的两个UITableViewCell,iphone,ios,objective-c,uitableview,Iphone,Ios,Objective C,Uitableview,我有两种类型的单元格,我将使用UITableView,所以我创建了两个具有不同标识符的原型单元格。我手动更改了大小,但在编译和运行时,两个单元格的大小相同 有没有办法通过情节串连板完成,而不必每次检查 -(CGFloat)tableView:(UITableView*)tableView rowatindexpath的高度:(nsindepath*)indepath{ 我至少会有大约100个细胞 更新:在我的例子中,我有一个包含3个部分的tableview,第一个小,第二个和第三个大。如果您知道

我有两种类型的单元格,我将使用UITableView,所以我创建了两个具有不同标识符的原型单元格。我手动更改了大小,但在编译和运行时,两个单元格的大小相同

有没有办法通过情节串连板完成,而不必每次检查

-(CGFloat)tableView:(UITableView*)tableView rowatindexpath的高度:(nsindepath*)indepath{

我至少会有大约100个细胞


更新:在我的例子中,我有一个包含3个部分的tableview,第一个小,第二个和第三个大。

如果您知道这些部分决定了单元格的高度,那么您可以这样实现:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath*)indexPath {
    CGFloat result;
    if (indexPath.section == 0) {
        result = 160;
    } else {
        result = 80;
    }
    return result;
}

当然,这取决于您需要的高度。

如果您知道这些部分决定了单元格的高度,那么您可以这样实现:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath*)indexPath {
    CGFloat result;
    if (indexPath.section == 0) {
        result = 160;
    } else {
        result = 80;
    }
    return result;
}

当然,这取决于您需要的高度。

我认为您最好的选择是使用您列出的-tableView:heightForRowAtIndexPath:delegate方法并返回您想要的高度

您可以为每个原型分配标记,并使用if/elseif条件

或者,如果每个原型都有一个子类UITableViewCell,则可以执行以下操作

...
id cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[CustomCell1 class]]) {
    // return aNumber;
} else if ([cell isKindOfClass:[CustomCell2 class]]) {
    // return aNumber;
} else {
    return aNumber;
}
...

我认为最好的选择是使用您列出的-tableView:heightforrowatinexpath:delegate方法,并返回您想要的高度

您可以为每个原型分配标记,并使用if/elseif条件

或者,如果每个原型都有一个子类UITableViewCell,则可以执行以下操作

...
id cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[CustomCell1 class]]) {
    // return aNumber;
} else if ([cell isKindOfClass:[CustomCell2 class]]) {
    // return aNumber;
} else {
    return aNumber;
}
...

是的,如果你有某种模式(比如说,每个偶数的细胞都更大),否则我会听NSAddict:Dand,你会如何做一些计算效率高的事情?PS:只是更新我个人不喜欢情节提要。我通过自定义
UITableViewCell
类以编程方式来做这件事。在每个
委托
数据源
方法中都有
IndexPath
。使用相同的cellIdentifier,但使用不同的子类初始化cellForRow是的,如果您有某种模式(比如说,每个偶数单元格都更大),否则我会听NSAddict:Dand,你会如何做一些计算效率高的事情?PS:只是更新我个人不喜欢情节提要。我通过自定义
UITableViewCell
类以编程方式来做这件事。在每个
委托
数据源
方法中都有
IndexPath
。使用相同的cellIdentifier,但初始化cellForRow,并相应地使用不同的子类