Ios self.collectionView和UICollectionViewCell.self之间的差异
例如,我知道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
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在这里只是指使用这个类作为模板来创建单元格。