剛剛接觸swift以及ios,不是很理解有的邏輯,導致某些問題。這里分享一下swift自定義uicollectionviewcell
首先我的viewcontroller不是直接繼承uicollectionviewcontroller,而是添加的uicollectionview到我的storyboard,
然后再新建一個swift的文件,讓這個swift繼承uicollectionviewcell
import Foundation class 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 UIKit class 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的類里面寫自己需要的代碼了。
另外需要更新這個uicollectionview的時候,只需要使用這個view的 reload方法就可以重新加載,修改需要加載的內容就可以了。