Day 22 UICollectionView的练习 (2/2)

今天把功能都做完吧~
首先,我们把图片弄到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~

成果:


<<:  day19_Windows ARM 的文书工作之旅

>>:  [18] 登入後将用户资料纪录

在 Clear Linux 上安装 Google Chrome

一、前言 Linux 上面多半有 Firefox,为什麽我还大费周章安装 Google Chrome...

[想试试看JavaScript ] 函式运算式

函式 函式运算式 Function expression 函式运算式中文也叫函式表达式 上一篇了解到...

Microsoft Azure Pass 学习日志 Day 3

Chap.II Storage Services 存储服务 磁碟:具有不同大小、性能 档案:使你可以...

[NestJS 带你飞!] DAY23 - Authentication (上)

相信各位在使用各大网站提供的功能时,都会需要注册帐号来获得更多的使用体验,比如:google、fac...

Unity自主学习(三):如何安装Unity(二)

我们昨天为了接下来的学习,安装了"Unity Hub",今天就要来熟悉一下Uni...