关于设置CollectionView默认选中某一行,我相信很有朋友,特别是新手都会遇到一个问题,为什么不是和tableview一样,直接设置selectItemAtIndexPath就可以了?所以,在这里,我要跟大家分享如何设置CollectionView默认选中某一行(如果还有更好的方法,请告知一下,有错,也可以指出来)。
其实,和tableView一样,也是要使用到代理方法selectItemAtIndexPath,来设置选中某一个cell。如下代码:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [self.collectionView selectItemAtIndexPath:indexPath animated:YES scrollPosition:UICollectionViewScrollPositionNone];
不一样的是,这段代码并没有执行指定的cell里面的代码,所以会让大家觉得这段代码无效,其实不是的,这段代码其实已经标志了该cell被选中了,但至于选中时候字体加粗,或者字体颜色等设置,是要另外设置的。可以有两种方式:一、直接利用indexPath来获取cell,并进行选中状态的设置。二、刷新相应的cell,但前提是有做了一定的判断,使得刷新会设置选中状态。
然后再设置好didSelectItemAtIndexPath以及didDeselectItemAtIndexPath中,选中状态cell,和非选中状态的cell,就会发现,默认可以了,也可以切换了。
但是,仅仅以上的设置,可能会出现一个问题,滚动复用的时候,有选中状态也复用了,变成了有几个都有选中状态了,怎么办?这就要避免掉复用时候的选中状态了。通常我是会做一个标记,标记选中的cell,在collectionView:cellForItemAtIndexPath:里面做好相应的逻辑判断,这样一来,复用问题也解决了。大功告成
以上,就是我关于CollectionView默认选中某一行的方法。有疑问,欢迎留言。如果对您有帮助,点个赞,谢谢
网友评论