现在我正在使用NSClassFromString
,但有更好的方法来获得AnyClass
!来自Swift的一个班级?我正在尝试将引用传递给我的集合视图' -registerClass:forCellWithReuseIdentifier:
方法。
collectionView.registerClass(NSClassFromString("MyCoolViewCell"), forCellWithReuseIdentifier: "MyCoolViewCell")
答案 0 :(得分:149)
目前这只是盲目但有根据的猜测,但使用Class.self
可能就是你想要的。
collectionView.registerClass(MyCoolViewCell.self, forCellWithReuseIdentifier: "MyCoolViewCell")
答案 1 :(得分:14)
如果您使用的是nib文件,请改用此代码:
let nib = UINib(nibName: "MyCoolViewCell", bundle: nil)
collectionView?.register(nib, forCellWithReuseIdentifier: "MyCoolViewCellIdentifier")
答案 2 :(得分:13)
在Swift 3中:
self.collectionView.register(CustomCollectionViewCell.self, forCellWithReuseIdentifier: "CustomCollectionViewCellReuseIdentifier")
答案 3 :(得分:0)
NSClassFromString("MyCoolViewCell")
可能无效。
应该在前缀中添加模块名称:
collectionView.registerClass(NSClassFromString("MyApp.MyCoolViewCell"), forCellWithReuseIdentifier: "MyCoolViewCell")
如果cellClass不是变量,则使用MyCoolViewCell.self
是更好的选择。