我只是希望单元格用UIColor或背景图像短暂突出显示,然后在用户点击单元格时动画回到未选择状态。我用星号标记单元格以显示它已被选中,但希望整个单元格能够短暂突出以显示选择。
答案 0 :(得分:14)
在didSelectRowAtIndexPath -
中添加此行[tableView deselectRowAtIndexPath:indexPath animated:YES];
答案 1 :(得分:14)
我认为如果您想要响应选择而只为一行设置动画,则所提供的答案是可靠的。
我正在寻找一种方法,可以同时执行多行,而无需选择和取消选择响应触摸的行。我做了以下事情:
在我的UITableViewController中创建了一个名为“calloutCells”的方法:
- (void)calloutCells:(NSArray*)indexPaths
{
[UIView animateWithDuration:0.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^void() {
for (NSIndexPath* indexPath in indexPaths)
{
[[self.tableView cellForRowAtIndexPath:indexPath] setHighlighted:YES animated:YES];
}
}
completion:^(BOOL finished) {
for (NSIndexPath* indexPath in indexPaths)
{
[[self.tableView cellForRowAtIndexPath:indexPath] setHighlighted:NO animated:YES];
}
}];
}
请注意,持续时间和延迟不会改变我选择的动画,因为我在setHighlighted上使用了内置动画。
当我想从UITableViewController启动高亮/不高亮动画时,我可以同时突出显示第0部分的第3行和第4行,如下所示:
[self calloutCells:[NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:3 inSection:0],
[NSIndexPath indexPathForRow:4 inSection:0], nil]];
希望这有助于其他人!
答案 2 :(得分:0)
如果您想要更好地控制突出显示的内容,可以使用单元格标签的“突出显示”属性并设置selectedBackgroundView。选中时,两者都会短暂闪烁
// text color
[[cell textLabel] setTextColor:[UIColor blackColor]];
[[cell textLabel] setHighlightedTextColor:[UIColor whiteColor]];
// background image
UIImageView *backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell-background.png"]];
[cell setBackgroundView:backgroundView];
[backgroundView release];
UIImageView *selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell-background-highlighted.png"]];
[cell setSelectedBackgroundView:selectedBackgroundView];
[selectedBackgroundView release];
答案 3 :(得分:0)
swift3版本:
func calloutCell(indexPath: IndexPath) {
UIView.animate(withDuration: 0,
delay: 0,
options: .allowUserInteraction,
animations: {
let cell = self.tableView.cellForRow(at: indexPath)
cell?.setHighlighted(true, animated: true)
}) { (f: Bool) in
let cell = self.tableView.cellForRow(at: indexPath)
cell?.setHighlighted(false, animated: true)
}
}
内部CEll:
self.selectionStyle = .blue
let uiview = UIView(frame: CGRect(x: 0, y: 0, width: 209, height: 251))
uiview.backgroundColor = UIColor.red
self.selectedBackgroundView = uiview