DAY 7 『 TableView 』Part2

TableView:Storyboard + Table View + Table View Cell + Image View + Lable * 2

今天主要讲解:

  1. 扩充 ViewController(UITableViewDelegate,UITableViewDataSource)
  2. delegate & dataSource 的拉线

扩充 ViewController(UITableViewDelegate,UITableViewDataSource)

extension ViewController: UITableViewDelegate,UITableViewDataSource{
    //tableView要显示几列
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return movies.count
    }
    //cell里面要显示什麽
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        //我们要将dequeueReuseableCell 参照到刚刚建立的 cell 所以要 Downcasting (向下转型) ::: as! TableViewCell :::
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MyTableViewCell
        // Cell contents setting
        cell!.ptView.image = movies[indexPath.row].image
        cell!.name.text = movies[indexPath.row].name
        cell!.date.text = movies[indexPath.row].date
        return cell!
    }
    func numberOfSections(in tableView: UITableView) -> Int { return 1 }
}

扩充ViewController

在 Storyboard 将 Table View 拉线到 View Controller,选择 delegate & dataSource

点选这两个选项

拉完後就会呈现这样

附上完整程序码

//MyTableViewCell
import UIKit

class MyTableViewCell: UITableViewCell {

    @IBOutlet var ptView: UIImageView!
    @IBOutlet var date: UILabel!
    @IBOutlet var name: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
}
//ViewController
import UIKit
struct mvs {
    var image : UIImage?
    var date : String?
    var name : String?
    
    init(image: UIImage, date: String, name: String){
        self.image = image
        self.date = date
        self.name = name
    }
}
class ViewController: UIViewController {

    var movies = [mvs]()
    func moviesitem(){
        movies.append(mvs(image: UIImage(named:"引爆摩天楼")! , date: "1997年4月19日", name: "引爆摩天楼"))
        movies.append(mvs(image: UIImage(named:"第14号猎物")!, date: "1998年4月18日", name: "第14号猎物"))
        movies.append(mvs(image: UIImage(named:"世纪末的魔术师")!, date: "1999年4月17日", name: "世纪末的魔术师"))
        movies.append(mvs(image: UIImage(named:"瞳孔中的暗杀者")!, date: "2000年4月22日", name: "瞳孔中的暗杀者"))
        movies.append(mvs(image: UIImage(named:"往天国的倒数计时")!, date: "2001年4月21日", name: "往天国的倒数计时"))
        movies.append(mvs(image: UIImage(named:"贝克街的亡灵")!, date: "2002年4月20日", name: "贝克街的亡灵"))
        movies.append(mvs(image: UIImage(named:"迷宫的十字路")!, date: "2003年4月19日", name: "迷宫的十字路"))
        movies.append(mvs(image: UIImage(named:"银翼的奇术师")!, date: "2004年4月17日", name: "银翼的奇术师"))
        movies.append(mvs(image: UIImage(named:"水平线上的阴谋")!, date: "2005年4月9日", name: "水平线上的阴谋"))
        movies.append(mvs(image: UIImage(named:"侦探们的镇魂歌")!, date: "2006年4月15日", name: "侦探们的镇魂歌"))
        movies.append(mvs(image: UIImage(named:"绀碧之棺")!, date: "2007年4月21日", name: "绀碧之棺"))
        movies.append(mvs(image: UIImage(named:"战栗的乐谱")!, date: "2008年4月19日", name: "战栗的乐谱"))
        movies.append(mvs(image: UIImage(named:"漆黑的追迹者")!, date: "2009年4月18日", name: "漆黑的追迹者"))
        movies.append(mvs(image: UIImage(named:"鲁邦三世VS名侦探柯南")!, date: "2009年3月27日", name: "鲁邦三世VS名侦探柯南"))
        tableView.reloadData()
    }
    
    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        moviesitem()  
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

extension ViewController: UITableViewDelegate,UITableViewDataSource{
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        return movies.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? MyTableViewCell
        cell!.ptView.image = movies[indexPath.row].image
        cell!.name.text = movies[indexPath.row].name
        cell!.date.text = movies[indexPath.row].date
        return cell!
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
}

这样就完成啦!恭喜你学会 tableView 了,明天会有新的实作分享,敬请期待!


<<:  04. Unit Test x Cart Class

>>:  第19天 - 来试着做一个简易购物系统(3)建购物车的资料表、一点点SESSION

用React刻自己的投资Dashboard Day9 - useEffect hook

tags: 2021铁人赛 React 既上一篇介绍完useState hook後,本篇就来介绍Da...

Day01 前言

自我介绍 大家好,我是 Nick,15年开始接触 iOS App 的开发,在学习的过程中独立完成一...

[DAY25] Boxenn 小结

将几篇 Boxenn 相关文章整理成分类目录(范例 GitHub repository 建置中,完成...

Day.12 「来为网页添加动画吧!」 —— CSS 动画(animation)

现在我们会使用具有互动性的简单渐变效果了,接着要来试着让网页能增添更多活力,不需要我们操作,就会自...

Day15 参加职训(机器学习与资料分析工程师培训班),Python程序设计

今天教seaborn真的觉得比matplotlib厉害好多,也教了Requests跟bs4 impo...