0

每次当用户cellUITableView. 你能告诉我,怎么可能做到这一点?

我想这样做是因为我有一个带有图片的自定义单元格,并且每次用户突出显示该单元格时我都想更改图片。

UPD:我所说的高亮是指用户只是高亮一个单元格,而不是松开手指。通过选择,我的意思是当 didSelectRowAtIndexPath 被启动时(所以用户在按下它后从单元格中释放手指)

4

3 回答 3

2

您如何设想用户会“突出显示”一个单元格而不是“选择”一个单元格?

在 iOS(或任何基于触摸的环境)中,没有仅突出显示一个单元格而不是选择一个单元格的概念。当用户触摸单元格时,您得到的唯一回调是 didSelectRowAtIndexPath:

可能值得在此处阅读有关表格的文档

更新

嗯,好的,在这种情况下,你想像这样设置单元格 imageView 的 highlightImage 属性;

cell.imageView.image = [UIImage imageNamed:@"normal_image.png"];
cell.imageView.highlightedImage = [UIImage imageNamed:@"highlighted_image.png"];
于 2012-09-28T14:55:57.480 回答
0

我不明白你的问题..你不想使用方法 selectRowAtIndexPath 吗?

如果你想在用户选择一行时执行一个方法:

- 您可以使用方法 selectRowAtIndexPath 并执行您的方法。

您还可以在单​​元格内创建一个不可见的 UIButton ,当单击单元格时,您将单击按钮并执行您的方法。. .

于 2012-09-28T14:59:18.420 回答
0

从 iOS 6.0 开始,UITableViewDelegate有 3 种方法来处理单元格突出显示:

- tableView:shouldHighlightRowAtIndexPath:
- tableView:didHighlightRowAtIndexPath:
- tableView:didUnhighlightRowAtIndexPath:

你应该使用它们,就像在这个例子中一样:

- (BOOL)tableView:(UITableView*)tableView shouldHighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    return YES;
}

- (void)tableView:(UITableView*)tableView didHighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    MyTableViewCell* cell = (MyTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    cell.myImageView.image = [UIImage imageNamed:@"myCellHigh"];    
}

- (void)tableView:(UITableView*)tableView didUnhighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    MyTableViewCell* cell = (MyTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    cell.myImageView.image = [UIImage imageNamed:@"myCellUnhigh"];  
}
于 2015-05-18T14:56:52.303 回答