首页 > 代码库 > [IOS]swift自定义uicollectionviewcell
[IOS]swift自定义uicollectionviewcell
刚刚接触swift以及ios,不是很理解有的逻辑,导致某些问题。这里分享一下swift自定义uicollectionviewcell
首先我的viewcontroller不是直接继承uicollectionviewcontroller,而是添加的uicollectionview到我的storyboard,
然后再新建一个swift的文件,让这个swift继承uicollectionviewcell
import Foundationclass SVGCell :UICollectionViewCell{ convenience required init(coder : NSCoder){ self.init(frame:CGRect(x: 0, y: 0, width: 50, height: 50)) } // required init(coder: NSCoder) {// fatalError("NSCoding not supported")// } override init(frame: CGRect) { super.init(frame: frame) }//about Inheritance //http://stackoverflow.com/questions/25126295/swift-class-does-not-implement-its-superclasss-required-members}
这里继承UICollectionViewCell的时候需要复写 一个父类初始化方法,以及一个required的初始化方法,上面的一个链接是关于这个required的方法的一个说明,是新的版本所必须的,否则会报语法错误,错误内容大概是要求你实现一个required方法。
这里不能够写一个自定义的初始化,因为这个cell不是因为init所创建的。
然后回到我们的viewcontroller
import UIKitclass ViewController: UIViewController ,UICollectionViewDataSource,UICollectionViewDelegate {//继承后面这两个协议,需要使用collectionview所必须的然后可以复写下面的三个必须的方法 @IBOutlet weak var svgcollection: UICollectionView!
let reuseidentifier="SVGCell"
func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int { return 2 }//这3个func在继承了datasource & delegate一定要重写,如果有多个tableview 或者collection view 则在里面使用判断,对参数collectionview判断 func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! { var cell:SVGCell=svgcollection.dequeueReusableCellWithReuseIdentifier(reuseidentifier, forIndexPath: indexPath) as SVGCell //reuse //这里这个cell不需要初始化 //在return 之前 构造 一个cell 这里如果再次初始化的话,会导致uncatch的exception,内容大概是没有 reuseidentifier return cell }// func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int { return 1 }//}
在添加到我们的storyboard的uicollectionview的里面
这个栏目里面的cell设置它的属性
设置好Identifier属性就基本完成了,接下来可以在自定义的uiviewcollectionCell的类里面写自己需要的代码了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。