以编程方式“闪烁” UITableViewCell 将背景颜色设置为白色
Posted
技术标签:
【中文标题】以编程方式“闪烁” UITableViewCell 将背景颜色设置为白色【英文标题】:Programmatically "flashing" UITableViewCell sets background color to white 【发布时间】:2014-04-28 16:30:08 【问题描述】:我在我的UICollectionView
中设置了UILongPressGestureRecognizer
来调用
- (void)longPress:(UILongPressGestureRecognizer *)gesture
if (gesture.state == UIGestureRecognizerStateBegan)
CGPoint point = [gesture locationInView:self.collectionView];
NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:point];
if (indexPath)
self.manager.currentLongPressIndex = indexPath.row;
[self showPopover];
方法中显示的UIPopover
有一个UITableView
。我的目标是“闪烁”(选择然后取消选择UITableViewCell
)并滚动显示它。我就是这样做的:
- (void)viewDidLoad
[super viewDidLoad];
// get the current index path
NSIndexPath *path = [NSIndexPath indexPathForRow:self.manager.currentLongPressIndex inSection:0];
// set flag
self.cellIsFlashing = YES;
// select cell
[self.tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionMiddle];
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
if (self.cellIsFlashing == NO)
[self.viewController.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
else
self.cellIsFlashing = NO;
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
这有点用,但是选中的单元格的背景颜色变成了白色,而且闪光灯效果看起来不太好,看起来根本没有动画。
【问题讨论】:
【参考方案1】:尝试延迟取消选择过程:
-(void)deselectRow:(NSIndexPath *)indexPath
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
... // your code here
// call the deselect method with 0.3 second delay
[self performSelector:@selector(deselectRow:) withObject:indexPath afterDelay:0.3f];
不确定这是否可行,但值得一试。
【讨论】:
【参考方案2】:通过将单元格选择代码从viewDidLoad
更改为viewDidAppear:animated:
解决了问题
【讨论】:
以上是关于以编程方式“闪烁” UITableViewCell 将背景颜色设置为白色的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 UIImageViews 添加到 UITableViewCell
在 Swift 中以编程方式突出显示 UITableViewCell