今天把功能都做完吧~
首先,我們把圖片弄到Assets.xcassets裏面,直接把照片拖曳到左邊紅色框框圈起來處就行了~
然後回到MainVC.swift,在class MainVC,新增UICollectionViewDelegate跟UICollectionViewDataSource,然後在下面的viewDidLoad
設定delegate跟datasource。
MyCollectionView.delegate = self
MyCollectionView.dataSource = self
記得要先把MainVC.xib檔案裏面的CollectionView的OUtlet拉好喔~
@IBOutlet var MyCollectionView: UICollectionView!
然後我們宣告一個空陣列放我們的資料,之後再用append功能把東西加進去,陣列裡放的是我們上一篇建立的陣列裡放的是我們上一篇建立的stuct(宣告在class裏面,viewDidLoad外面)
var place = [collectionViewCellData]()
接著設定numberOfSections跟numberOfItemsInSection:
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return place.count
}
然後cellForItemAt裡面放:
//我們剛剛註冊的內容,indentifier是Cell,as?後面接的是nib,是我nibName的東西,不要弄錯
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? MyCollectionViewCell
然後cell裡面要有圖片跟文字,所以:
cell!.image.image = place[indexPath.row].image
cell!.name.text = place[indexPath.row].placeName
最後記得return cell!
補充一下加驚嘆號的原因,這個是跟optional有關,簡單說,有點像是我們要把CollectionViewCell解開,所以cell要加驚嘆號
沒加上驚嘆號,編譯器報的錯:
原因就是你沒解開,所以你可以在as那邊的?改成!
最後~把圖片跟文字弄進去:
func item(){
place.append(collectionViewCellData(image: UIImage(named: "taipei")!, placeName: "台北"))
place.append(collectionViewCellData(image: UIImage(named: "tokyo")!, placeName: "東京"))
place.append(collectionViewCellData(image: UIImage(named: "newyork")!, placeName: "紐約"))
place.append(collectionViewCellData(image: UIImage(named: "seoul")!, placeName: "首爾"))
place.append(collectionViewCellData(image: UIImage(named: "moscow")!, placeName: "莫斯科"))
place.append(collectionViewCellData(image: UIImage(named: "beijing")!, placeName: "北京"))
place.append(collectionViewCellData(image: UIImage(named: "paris")!, placeName: "巴黎"))
}
然後把這個功能加到viewDidLoad裏面,然後不要忘記reloadData~
成果: