我想要完成的是:
我有一堆课程,为我的家庭控制器定义不同的供稿。当我向左和向右滑动时,它会显示每个班级的每个Feed。
现在,我可以像这样注册每个类(有效):
collectionView?.register(VideoListView.self, forCellWithReuseIdentifier: VideoListView().getCellId())
collectionView?.register(AlertListView.self, forCellWithReuseIdentifier: AlertListView().getCellId())
每个ListView类都继承一个名为FeedView的基类:
class FeedView: BaseCell, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
BaseCell
只有我的初学者和我不想在每个课程中重复的事情:
class BaseCell: UICollectionViewCell
我想做的是:
let horizontalViews = [VideoListView, AlertListView]
for hv in horizontalViews{
collectionView?.register(hv.self, forCellWithReuseIdentifier: hv.getCellId())
}
但是,我得到的是这些错误:
类型名称后的预期成员名称或构造函数调用
和
实例成员'getCellId'不能用于'FeedView'类型
好的,所以我将数组中的类更改为:
let horizontalViews = [VideoListView(), AlertListView()]
但后来我收到了这个错误:
无法使用类型'的参数列表调用'register'(FeedView, forCellWithReuseIdentifier:String)'
这是在hv.self
来电中同时执行hv
和register()
。
我是Swift / Xcode开发的新手,所以任何帮助都将受到赞赏。
答案 0 :(得分:1)
我用Swift类(String,Int等等)尝试过它,但我失败了。但是,对于使用NSObject
派生的类,其中包含UIViewController
,您可以执行此操作。
你想要的是UIViewController
。所以你可以这样做:
var classes: [UIViewController.Type] = []
这意味着您可以添加“A类型的UIViewController”类型的任何内容。从中导出所有UIViewController类型。
您想要向此数组添加内容。试试这个:
classes.append(YourFirstViewController.self)
classes.append(YourSecondViewController.self)