我正在制作一个带有桌面视图的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
谢谢!
答案 0 :(得分:4)
indexPath
变量包含有关单元格位置的信息。修改你的例子:
if (indexPath.row == 0) {
// Use a specific image.
}
有关详细信息,请参阅NSIndexPath Class Reference和NSIndexPath 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行)会更容易