UICollectionView.CellRegistration的参数(cell、indexPath等)来自何处?
UICollectionView.CellRegistration 闭包参数来源解析
你看到的闭包是UICollectionView.CellRegistration的配置回调,这些参数全是UICollectionView内部自动传递的,不需要你手动传入,每个参数的具体来源和作用如下:
cell: UICollectionViewListCell:这是系统已创建或复用好的cell实例。当collectionView需要展示某个位置的cell时,会根据你注册的cell类型(此处为UICollectionViewListCell),要么新建一个cell,要么从复用池里取出闲置的cell,然后把这个cell对象传入闭包,供你配置内容。
indexPath: IndexPath:代表当前cell在collectionView中的位置(包含section和item信息)。你可以用它从数据源(比如示例里的
Reminder.sampleData)中取出对应位置的数据,以此来配置cell的内容。_: String:这是你注册时指定的标识符参数(又称
itemIdentifier)。创建CellRegistration时你指定了泛型类型为String,后续用这个注册对象获取cell时,需要传入对应的标识符值,系统会把这个值传递到闭包里。示例里用下划线_表示暂时不需要使用这个参数,但它的来源就是你dequeue cell时传入的标识符。
举个配套的dequeue代码示例,你就能更清楚:
collectionView.dequeueConfiguredReusableCell(using: cellRegistration, for: indexPath, item: "your-identifier")
这里的item: "your-identifier"就是闭包中第三个String参数的来源。
内容的提问来源于stack exchange,提问作者CaptainLupa
相关产品推荐
相关产品推荐

