下面的示例是对We❤Swift较长帖子的改编和简化。它将是这样的:
创建一个新项目
它可以只是通常的单视图应用程序。
添加代码
将ViewController.swift代码替换为以下代码:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
let animals: [String] = ["Horse", "Cow", "Camel", "Sheep", "Goat"]
let cellReuseIdentifier = "cell"
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier)
tableView.delegate = self
tableView.dataSource = self
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.animals.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as UITableViewCell!
cell.textLabel?.text = self.animals[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("You tapped cell number \(indexPath.row).")
}
}
阅读代码中的注释以查看发生了什么。重点是
- 视图控制器采用
UITableViewDelegate
和 UITableViewDataSource
协议。
- 该
numberOfRowsInSection
方法确定表视图中将有多少行。
- 该
cellForRowAtIndexPath
方法设置每一行。
didSelectRowAtIndexPath
每次轻按一行时都会调用该方法。
将表视图添加到情节提要
将aUITableView
拖到您的View Controller上。使用自动版式固定四个侧面。
连接插座
Control从IB中的表格视图拖到tableView
代码中的出口。
已完成
就这样。您现在应该可以运行您的应用了。
该答案已经过Xcode 9和Swift 4的测试
变化
行删除
如果要使用户删除行,只需要将一个方法添加到上面的基本项目中。请参阅此基本示例以了解操作方法。
行间距
如果您希望行之间有间距,请参见此补充示例。
自定义单元
表格视图单元格的默认布局可能不是您所需要的。查看此示例,以帮助您开始制作自己的自定义单元。
动态像元高度
有时,您不希望每个像元都具有相同的高度。从iOS 8开始,很容易根据单元格内容自动设置高度。请参阅此示例,以获取入门所需的一切。
进一步阅读