即时使用以下代码
[sampleListTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
[sampleListTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
[sampleListTableView deselectRowAtIndexPath:indexPath animated:YES];
我正在寻找的行为是表视图将滚动到路径(它所做的) 然后暂时选择单元格(如果单元格在屏幕上,它会这样做)
我认为滚动动画是有线程的,并且在屏幕上出现之前正在选择单元格,这是以某种方式确认的,就像我用它选择的屏幕上的单元格调用此代码然后取消选择一样。“ p>
任何人都有解决方法吗?我可以这样做(没有滚动动画),但事实并非如此甜美,非常突然
[sampleListTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
[sampleListTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionMiddle];
[sampleListTableView deselectRowAtIndexPath:indexPath animated:YES];
答案 0 :(得分:2)
我不确定但您可以尝试实现UIScrollViewDelegate协议的一些委托方法。喜欢这样的
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
并在那里取消选择。
答案 1 :(得分:1)
以下是我的一个项目的代码:
#define kHighlightTableRowDuration 0.5
- (void)scrollToLastInsertedItem:(NSIndexPath *)indexPath
{
@try
{
[myTableView scrollToRowAtIndexPath:indexPath
atScrollPosition:UITableViewScrollPositionBottom animated:YES];
if( rows >= 8 )
[myTableView performSelector:@selector(flashRowAtIndexPath:) withObject:indexPath afterDelay:0.5];
}
@catch(NSException *ex) // NSRangeException
{
ALog(@"NSRangeException: %@",ex);
}
}
// briefly highlight the last added item
- (void)flashRowAtIndexPath:(NSIndexPath *)indexPath
{
// if cell is offscreen, nil returned
UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath];
if( cell ){
BOOL shouldHighlight = YES;
if( ! cell.highlighted ){
DLog(@"Starting cell highlight, setting on: %@", indexPath);
shouldHighlight = YES;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
[self performSelector:@selector(flashRowAtIndexPath:) withObject:indexPath afterDelay:kHighlightTableRowDuration];
}else{
DLog(@"Ending cell highlight, setting off: %@", indexPath);
cell.selectionStyle = UITableViewCellSelectionStyleNone;
shouldHighlight = NO;
}
[cell setHighlighted:shouldHighlight animated:YES];
}
}
flashRowAtIndexPath
被调用两次,第一次打开高亮显示,然后再次在给定延迟后将其关闭。在我的UITableView
选择样式中通常为“none”,因此我必须更改选择样式以突出显示。