鉴于此功能:
func createEmptyArrayWithViewType(viewType: UIView.Type) -> [UIView] {
/// Create array of viewType views
}
如何使用该功能创建空数组? viewType参数可以是任何UIView子类(UIImageView,UILabel等)。是否可以不使用泛型?
更新
好的,我认为更多的背景会有所帮助。
我想要构建的是一个重用队列,它几乎完成了UITableView和UICollectionView所提供的功能。
这是我班上当前的代码:
class SwipeView: UIView {
private var _reuseQueues = [String: [MatchSwipeCell]]()
...
}
/// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//MARK: - Reuse queue
/// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
extension SwipeView {
func registerClass(cellClass: SwipeCell.Type, forCellWithReuseIdentifier identifier: String) {
if let reuseQueue = _reuseQueues[identifier] {
fatalError("Reuse identifier '\(identifier)' was already registered with class '\(reuseQueue.dynamicType.Element.self)'")
}
/// This is not working!
_reuseQueues[identifier] = [cellClass]()
}
func dequeueReusableCellWithReuseIdentifier(identifier: String) -> SwipeCell {
guard var reuseQueue = _reuseQueues[identifier] else {
fatalError("No class was registered for the reuse identifier '\(identifier)'")
}
if let cell = reuseQueue.first {
reuseQueue.removeFirst()
cell.prepareForReuse()
return cell
}
return reuseQueue.dynamicType.Element(reuseIdentifier: identifier)
}
private func enqueueCellForReuse(cell: SwipeCell) {
_reuseQueues[cell.reuseIdentifier]?.append(cell)
}
}
答案 0 :(得分:1)
等等,你只想创建一个UIView
的空数组?您的功能将如下所示:
func createEmptyArrayWithViewType(viewType: UIView.Type) -> [UIView] {
return []
}
不需要 viewType
参数。您可以在此数组中添加所需的任何视图(UIImageView
,UILabel
等。)
var array = createEmptyArrayWithViewType(UIImageView)
array.append(UIImageView())
array.append(UILabel())
如果你希望让函数返回[UIView]
,你最终会得到UIView
s的空数组