从cellForRowAtIndexPath获取单元格编号

时间:2011-03-20 00:12:13

标签: iphone ios uitableview

我正在制作一个带有桌面视图的iPhone应用程序,我正试图在桌子上的每个单元格旁边放置一个不同的图标/图像。

我知道你在(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中使用如下代码设置图像:

UIImage *image = [UIImage imageNamed:@"image.png"];
        cell.imageView.image = image;

我想弄清楚的是,我如何定位特定的细胞,以便它具有独特的图像?像:

if (cell.number == 0) {
    //Use a specific image
}
else if (cell.number == 1) {
    //Use a different image

谢谢!

5 个答案:

答案 0 :(得分:4)

indexPath变量包含有关单元格位置的信息。修改你的例子:

if (indexPath.row == 0) {
  // Use a specific image.
}

有关详细信息,请参阅NSIndexPath Class ReferenceNSIndexPath UIKit Additions Reference。同样重要的是要注意每个部分中的单元格编号重置。

答案 1 :(得分:1)

使用传递给row方法的NSIndexPath中的section(可能还有tableView:cellForRowAtIndexPath:)属性来标识正在查询的单元格。

答案 2 :(得分:0)

这个函数传递一个索引路径,它有一个部分和一个行。 indexPath.row将传回一个你可以检查的整数。

答案 3 :(得分:0)

执行cellForRowAtIndexPath时,您可以访问indexPath变量,因此如果要根据单元格索引自定义单元格样式,可以执行以下操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0) {
        // code for cell 0
    }
    else {
        if (indexPath.row == 1) {
            // code for cell 1
        }
    }
}

这只是一个例子,我不认为使用if条件自定义单元格是最好的主意,但它会告诉你如何做你需要的。

请记住,indexPath也包含表的一部分。如果您使用的是Grouped表视图,则还需要管理该部分。例如:

if (indexPath.section == 0) {
    // section 0
    if (indexPath.row == 0) {
        // code for section 0 - cell 0
    }
    else {
        if (indexPath.row == 1) {
            // code for section 0 - cell 1
        }
    }        
}
else {
    if (indexPath.section == 1) {
        // section 1
        if (indexPath.row == 0) {
            // code for section 1 - cell 0
        }
        else {
            if (indexPath.row == 1) {
                // code for section 1 - cell 1
            }
        }

    }
}

答案 4 :(得分:0)

对于看起来稍微好看的方法,我会将您想要使用的所有图像放入数组中:

_iconArray = @[@"picture1.png", @"picture2.png", @"picture3.png"];

这意味着当你来到cellForRowAtIndex函数时,你只能说:

cell.imageView.image = [UIImage imageNamed:_iconArray[indexPath.row]];

如果您有多个部分,这也更容易,这次您可以创建一个数组数组,每个数组包含不同部分所需的图片。

_sectionsArray = @[_iconArray1, _iconArray2, _iconArray3];

cell.imageView.image = [UIImage imageNamed:_sectionsArray[indexPath.section][indexPath.row];

这样可以很容易地修改图片(因为你只处理数组。如果你有更多的行和部分(想象手动操作100行)会更容易