如何定义uitableviewcells

时间:2011-08-24 23:32:42

标签: iphone ios uitableview

我正在创建一个包含两个部分的uitableview,section == 0有5行,section == 1有1行。

我还在objective-c类中声明了几个函数,我想将它们挂钩到五行中的每一行。但是我不知道如何实现这一点。

我认为它就像是

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

//---------- In here put a bunch of IF statments, declaring each cell? and linking it to
//---------- the function I have declared in the objective-c class

    return cell;
}

3 个答案:

答案 0 :(得分:1)

通常,单元格设置在tableView:cellForRowAtIndexPath:中。确定点击单元格时调用的函数通常在tableView:didSelectRowAtIndexPath中完成。

tableView:cellForRowAtIndexPath:中设置单元格时,您可以使用indexPath指定部分和行,如下所示:

if(indexPath.section == 0){

    if(indexPath.row == 0){

        // setup this cell...

    }else if(indexPath.row == 1){

    }// ...

}else if(indexPath.section == 1){

    if(indexPath.row == 0){

    }else if(indexPath.row == 1){

    }// ...
}

在确定用户点击每个单元格时调用哪个函数时,在tableView:didSelectRowAtIndexPath中执行类似操作。可以找到Apple的相关文档here

答案 1 :(得分:0)

通常,此函数将通过从数组,数据库或其他一些索引集合中提取数据来配置单元格:

if ([indexPath section] == 0) {
    [[cell textLabel] setText:[sectionOneValues objectAtIndex:[indexPath row]]];
}
else if ([indexPath section] == 0) {
    [[cell textLabel] setText:[sectionTwoValues objectAtIndex:[indexPath row]]];
}

在你的情况下,听起来你想要“挂钩”第0节中5行的其他一些函数,所以除了在if子句中使用sectionOnValues数组之外你还要做其他事情。如果不知道你对这些挂钩的函数的意义,那就更难具体了。

答案 2 :(得分:0)

取决于,所有细胞是否相等,但只改变其内容?在那种情况下,你是对的。

另一方面,如果您打算在单元格中添加更多标签,图像或其他内容,那么,对于每个不同的行,您必须调整单元格的创建方式,因此,必须添加新的CellIdentifiers避免混合单元格,并更改if (cell == nil) {}内的代码以配置每个单元格设计。