当前位置: 首页 > 资讯 >

Day#04 TableView

前言

承接昨天的内容,今天来加上viewDidLoad中的逻辑内容{ @•̀ꈊ•́@ }

学习资源

这篇参考的资源与前篇相同,还新增了 :arrow_down:

表格 UITableView

TableView

UITableView有两个必须实作的方法,第一个是每一组有几个cell、第二个是每个 cell 要显示的内容。

算是一个快捷键/小技巧,不需要按照func tableView...这样一个字一个字慢慢打,直接打numberOfRowsInSection,甚至打num,XCode就会跳出提示,然後可直接选择要实作的方法,可参考下图32行

首先是第一个方法,这边的data是指viewController的private TodoListItem阵列。我们直接回传共有几个item,代表有多少个相对应的cell。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return data.count
}

然後接下来是每个cell的内容,我们使用"cell"作为identifier,把data一个个的塞到cell文字内容中显示。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.textLabel?.text = data[indexPath.row].item
    return cell
}

最後,因为前一天有提到,当我们点选某个item/cell的时候,要可以看他的细节与内容,因此加入一个选择row时的方法。
这边先加上取消选择的状态,其他查看细节的内容先不实作。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)
}

UITableViewDelegate, UITableViewDataSource

UITableView必须设置委任模式的对象来完善这个表格的内容,而我们将tableView直接写在viewController当中,因此指定他为委派对象。
UITableView委任的方法大多会有indexPath参数,这个参数有两个属性分别为section及row,是用来表示目前要设置的cell是属於哪一组( section)的哪一列(row),型别都为Int且都是0-index。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

viewDidLoad

把上述的tableview以及其中的cell identifier bind进来。

override func viewDidLoad() {
    super.viewDidLoad()

    table.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    table.delegate = self
    table.dataSource = self
}

结语

到这边可以先build(cmd+B),试试看,应该要建置成功!

搭配viewController的是storyboard,storyboard将元件实际显示出来,透过连结的方式去mapping viewController/storyboard的关系。下一篇会继续实作!

若上述内容有误或可以改进的部分,欢迎留言以及提出任何指教~
谢谢 ୧༼◕ ᴥ ◕༽୨


相关文章:

  • Rust-命令行的输入输出
  • Day 29 -- Stimulus with Rails 6
  • [Day28] swift & kotlin 上架篇!(2) 小鸡BB-游戏上架流程-kotlin
  • Day 29 没有研究出来的 Compose UI ViewPager
  • DAY 22-凭证颁发机构CA
  • [Day 12] 列表渲染v-for
  • 铁人赛 Day2 -- Visual Studio Code 一键叫出HTML & 唯一好用快捷键
  • Day13 - 使用爬虫套件撷取网页内容
  • Day 24 - 设定开发帐号 HBuilder X - DCloud 注册
  • Django template - javascript变数含safe filter
  • 【Day 21】Lambda 函式
  • [第十九只羊] 迷雾森林舞会XIII 设定form 绑定dom 同步房间(单押)
  • 【Day 24】用 SOLID 方式开发 React (1)
  • [Day10] Google Cloud Platform 简介
  • Day 29 | 状态管理-从官方范例来看如何使用BLoC (2)
  • 香港电话卡怎么在内地使用: CSL Hello/Three/CMHK/Smartone电话卡内地使用方法
  • 一键脚本:SmokePing一键安装/管理脚本
  • VPS优惠:搬瓦工香港VPS补货/G口/KVM/月付9.9美元
  • Google Voice怎么转移到Lycamobile
  • 一键脚本:Aria2+Aria2Ng+OneIndex | 自动上传OneDrive
  • 如何在Hositnger主机开启Cloudflare服务,Hositnger主机Cloudflare CDN使用教程
  • WordPress SEO怎么做?如何优化WordPress提升流量
  • Git是什么?
  • Google:国际化网站即使有相同的英文内容也不属于重复内容
  • 以太坊是什么?以太坊原理和以太坊入门教程
  • 性价比最高的国外VPS服务器推荐:便宜好用的美国VPS大全
  • vultr.com怎么申请退款教程和方法
  • Google SEO入门:如何做好谷歌网站排名SEO
  • WordPress 为当前文章在【分类】小工具中的所属分类添加current-cat类名
  • Gutenberg 10.5 支持嵌入PDF,新增块模式,增强自定义器的小工具功能