继续问:为什么获得高度的代理方法中第二个参数传递indexPath.item
上次的问题:
对于MyCollectionViewLayout.m中获得高度的代理方法,如下:
CGFloat h = [self.delegate getCellHeight:width index:(int)indexPath.item];
为什么第二个参数传递indexPath.item而千万不能用indexPath.row?
继续问:
我把瀑布流案例中所有的indexPath.item都换成indexPath.row,运行结果一样,是不是Xcode9的UICollectionView中,indexPath.item和indexPath.row是一样的?
正在回答
UITableView的一个单元是一个cell就是一整行row,而UICollectionView的一个单元格就是独自的小区域一个item,如果每个item的高度都一样,设置一行的高度也就是item的高度也可以,但是如果想单独设置一个单元格的高度,也就是item的高度,是不是就需要设置单独的item的高度。例如,UITableView中每个row的高度可能是不同的,那么UICollectionView中是不是也可能每个item的高度也不同,那就需要去单独设置每个item的高度啊。
有时候助教的回答真是让人看了气愤.. 太多套路式的回答了.
google下就会发现
Inside NSIndexPath, the indexes are stored in a simple c array called "_indexes" defined as NSUInteger* and the length of the array is stored in "_length" defined as NSUInteger. The accessor "section" is an alias to "_indexes[0]" and both "item" and "row" are aliases to "_indexes[1]". Thus the two are functionally identical.
In terms of programming style – and perhaps the definition chain – you would be better using "row" in the context of tables, and "item" in the context of collections.
追寻这样的习惯是增加代码的可读性.. 实际上这.row和.item是一样使用,并不会报错..
- 参与学习 516 人
- 提交作业 158 份
- 解答问题 637 个
本路径采用基础+案例方式,助你解开对界面优化、数据储存、屏幕适配的疑惑。6小时团购项目实战加最新版本Swift讲解,让你掌握更多iOS开发技巧。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星