Swift中的UICollectionView的单元格registerClass

jar*_*jar 62 uitableview ios swift

现在我正在使用NSClassFromString,但有更好的方法来获得AnyClass!来自Swift的一个班级?我试图将引用传递给我的集合视图的-registerClass:forCellWithReuseIdentifier:方法.

collectionView.registerClass(NSClassFromString("MyCoolViewCell"), forCellWithReuseIdentifier: "MyCoolViewCell")
Run Code Online (Sandbox Code Playgroud)

Mat*_*uch 149

这目前只是一个盲目但有根据的猜测,但使用Class.self可能是你想要的.

collectionView.registerClass(MyCoolViewCell.self, forCellWithReuseIdentifier: "MyCoolViewCell")
Run Code Online (Sandbox Code Playgroud)

  • 语法不好?`.self`非常简洁. (12认同)
  • 这是非常糟糕的语法,但似乎有效.谢谢! (5认同)
  • 大多数语言中的`self`(类似于`this`)几乎总是引用类的一个实例,我认为这就是为什么让`ClassName.self`引用Class类是令人困惑的. (4认同)
  • 我是一名Objective-C开发人员,我发现这令人困惑,但它确实有效! (2认同)
  • 我发现`UIButton.class`比`UIButton.self`更加充分,可惜他们从Swift中删除了这个语法. (2认同)

atu*_*tri 15

如果您使用的是nib文件,请改用以下代码:

    let nib = UINib(nibName: "MyCoolViewCell", bundle: nil)
    collectionView?.register(nib, forCellWithReuseIdentifier: "MyCoolViewCellIdentifier")
Run Code Online (Sandbox Code Playgroud)


小智 13

在Swift 3中:

self.collectionView.register(CustomCollectionViewCell.self, forCellWithReuseIdentifier: "CustomCollectionViewCellReuseIdentifier")
Run Code Online (Sandbox Code Playgroud)