必须调用超类“UICollectionView”的指定初始化程序
Posted
技术标签:
【中文标题】必须调用超类“UICollectionView”的指定初始化程序【英文标题】:Must call a designated initializer of the superclass 'UICollectionView' 【发布时间】:2017-02-02 10:20:46 【问题描述】:尝试初始化一个collection view类并得到以下错误:
必须调用超类'UICollectionView'的指定初始化器
数据正在从另一个 ViewController 传递,我希望在用户搜索时从 ViewController 中绘制框架。
class searchLocationsCollectionViewManager: UICollectionView, UICollectionViewDataSource, UICollectionViewDelegate
weak var collectionView: UICollectionView!
didSet
collectionView.dataSource = self
collectionView.delegate = self
// Data handler
var data: [[String:Any]]?
didSet
print(data!)
//collectionView.reloadData()
init(collectionView: UICollectionView, frame: CGRect)
self.collectionView = collectionView
super.init()
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)!
func numberOfSections(in collectionView: UICollectionView) -> Int
return 1
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 3
// This is the current method for returning the cell.
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
return UICollectionViewCell()
关于为什么会发生上述情况的任何想法?
【问题讨论】:
UICollectionView
子类中的 UICollectionView
属性的用途是什么?考虑分配初始值时未调用didSet
。如果您的意思是UICollectionViewController
,那么已经有一个UICollectionView
属性。
【参考方案1】:
你需要调用UICollectionView
的指定初始化器init(frame:collectionViewLayout:)
。
init(collectionView: UICollectionView, frame: CGRect)
self.collectionView = collectionView
//Setup collectionView layout here and pass with init
let layout = UICollectionViewLayout()
super.init(frame: frame, collectionViewLayout: layout)
【讨论】:
我的类是从 UICollectionView 扩展的,它没有 collectionView 属性说:'MyCollectionView' 类型的值没有成员'collectionView' 为什么这只适用于 UICollectionViewController? 为什么UICollectionView没有collectionView @Daniella 因为UICollectionView
没有collectionView 属性,您需要创建扩展UICollectionView
的MyCollectionView
的对象。以上是关于必须调用超类“UICollectionView”的指定初始化程序的主要内容,如果未能解决你的问题,请参考以下文章
Swift:“必须调用超类的指定初始化程序”错误,即使代码正在这样做
覆盖 UICollectionView 的 UIPanGestureRecognizer
UICollectionView 错误:必须通过调用来检索单元格 -: -dequeueReusableCellWithReuseIdentifier:forIndexPath: