Ios self.collectionView和UICollectionViewCell.self之间的差异

Ios self.collectionView和UICollectionViewCell.self之间的差异,ios,swift,Ios,Swift,例如,我知道self.collectionView引用了当前实例的属性。但是,当我在中遇到以下语法UICollectionViewCell.self时: collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellID") 从苹果文档: func register(_ cellClass: AnyClass?, forCellWithReuseIdentifier identifier

例如,我知道self.collectionView引用了当前实例的属性。但是,当我在中遇到以下语法UICollectionViewCell.self时:

collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellID")
从苹果文档:

func register(_ cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String).
cellClass:要在集合视图中使用的单元格类


我弄不清楚语法实际上指的是什么?

UICollectionViewCell.self指的是要用于计算单元的类的类型

- (instancetype)self;

UICollectionViewCell.self是指要用于单元格的类的类型

- (instancetype)self;

如果TypeName继承自NSObject类,则TypeName.self将返回TypeName的类型,这是Abhishek建议的NSObject类中的一个方法

- (instancetype)self;
如果您创建了sayUICollectionViewCell的子类

class CustomCell: UICollectionViewCell {
}
你会像这样使用它吗

collectionView?.register(CustomCell.self, forCellWithReuseIdentifier: "cellId")
这将返回CustomCell(instanceType或AnyClass)


希望有帮助。

TypeName.self将返回TypeName的类型,如果该TypeName继承自NSObject类,这是Abhishek建议的NSObject类中的一个方法

- (instancetype)self;
如果您创建了sayUICollectionViewCell的子类

class CustomCell: UICollectionViewCell {
}
你会像这样使用它吗

collectionView?.register(CustomCell.self, forCellWithReuseIdentifier: "cellId")
这将返回CustomCell(instanceType或AnyClass)

希望能有所帮助。

正如你所写

collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellID")
这表示您将要使用预定义的
collectionviewcell

当然,如果我们定义了自定义单元格,那么我们将其编写为

self.collectionView.register(UINib(nibName: "MyCollectionViewCell",bundle : nil), forCellWithReuseIdentifier: "MyCollectionViewCell")
当我们键入self时。指的是我们正在使用当前的类变量,正如您所写的

collectionView?.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellID")
这表示您将要使用预定义的
collectionviewcell

当然,如果我们定义了自定义单元格,那么我们将其编写为

self.collectionView.register(UINib(nibName: "MyCollectionViewCell",bundle : nil), forCellWithReuseIdentifier: "MyCollectionViewCell")
当我们键入
self时。
指的是我们正在使用当前类变量func寄存器(\uCellClass:AnyClass?,forCellWithReuseIdentifier标识符:String)

此方法告诉集合视图它将重用哪个单元类的对象。这就是您如何理解此方法签名的方法

register方法需要两个参数,一个是AnyClass,另一个是String。AnyClass意味着您要传递一个类,该类的对象可以被集合视图单元重用。您只需要提及对象(类)的类型,而不是任何特定的对象

有关类型的详细信息,请参见

func寄存器(\uCellClass:AnyClass?,forCellWithReuseIdentifier标识符:String)

此方法告诉集合视图它将重用哪个单元类的对象。这就是您如何理解此方法签名的方法

register方法需要两个参数,一个是AnyClass,另一个是String。AnyClass意味着您要传递一个类,该类的对象可以被集合视图单元重用。您只需要提及对象(类)的类型,而不是任何特定的对象

有关类型的更多信息,请参见您知道“self.collectionView”指的是您创建并显示在屏幕上的集合视图。您(或界面生成器)创建该视图。“self”,在本例中是包含集合视图的视图控制器。这就是故事的一半,另一半是由系统完成的

您的集合视图将逐个单元格填充数据。您需要告诉集合视图要使用哪种单元格(它可以是自定义设计的单元格,也可以是普通的旧UICollectionViewCell)。你这样做的方式是“注册”你的手机。这会告诉集合视图需要创建哪种单元格

在我把它们联系在一起之前的最后一点是:在一个集合视图中可以有不同类型的单元格。可能有些有图像,有些单元格可能只是纯文本,其他单元格可能有组合。实现这一点的方法是要求您使用相关ID注册单元格,以便在需要单元格时更容易选择特定类型的单元格

注册语法完成两件事。对于要使用的每种类型的单元格(通常只有一种),您可以注册所需的单元格类型。这就是“UICollectionViewCell.self”的用武之地。它可以是“MyCell.self”,等等。self在这里只是指使用这个类作为模板来创建单元格。注册的第二部分是将标识符附加到模板/类以便于参考

self.collectionView-self是视图控制器

UICollectionViewCell.self-self是要使用的单元格的“instancetype”。系统使用此信息为您构建单元格。

您知道“self.collectionView”指的是您创建并显示在屏幕上的集合视图。您(或界面生成器)创建该视图。“self”,在本例中是包含集合视图的视图控制器。这就是故事的一半,另一半是由系统完成的

您的集合视图将逐个单元格填充数据。您需要告诉集合视图要使用哪种单元格(它可以是自定义设计的单元格,也可以是普通的旧UICollectionViewCell)。你这样做的方式是“注册”你的手机。这会告诉集合视图需要创建哪种单元格

在我把它们联系在一起之前的最后一点是:在一个集合视图中可以有不同类型的单元格。可能有些有图像,有些单元格可能只是纯文本,其他单元格可能有组合。实现这一点的方法是要求您使用相关ID注册单元格,以便在需要单元格时更容易选择特定类型的单元格

注册语法完成两件事。对于要使用的每种类型的单元格(通常只有一种),您可以注册所需的单元格类型。这就是“UICollectionViewCell.self”的用武之地。它可以是“MyCell.self”,等等。self在这里只是指使用这个类作为模板来创建单元格。