在本教程的此部分中,无涯教程将使用TableViewController进行表视图。无涯教程还将使用原型单元和静态单元创建示例项目。
可以将TableViewController定义为专门用于管理tableview的ViewController。 TableViewController负责维护表及其数据和事件。为此,它使用其tableview属性的委托和DataSource。 TableViewController是继承UIViewController的UITableViewController类的实例。
class UITableViewController : UIViewController
当无涯教程只需要使用视图控制器显示tableview而没有其他内容时,无涯教程将继承UITableViewController类,因为无涯教程只能在接口构建器中将tableview添加到TableViewController中。
要将TableViewController添加到接口构建器,请考虑以下说明。
在上面显示的图像中,无涯教程获得了由XCode生成的项目文件,以运行单个视图iOS应用程序。它还会生成一个ViewController.swift文件,该文件将分配到情节提要中的Single View Controller。删除此文件并创建UITableViewController的新子类,如下图所示。
它将在Storyboard中添加TableViewController。
如果无涯教程运行上述项目,它将使以下输出作为空TableView。
以下图像在TableViewController中显示各种可见组件。
示例1:创建简单的TableViewController
在此示例中,无涯教程将创建一个简单的TableViewController,在其中无涯教程将以表格形式显示数据网格。
自定义tableviewcontroller子类继承了UITableViewController类,并符合UITableViewDelegate和UITableViewDataSource协议,这使自定义子类覆盖了UITableViewDelegate和UITableViewDataSource协议的所有方法。下图显示了包含TableViewController的项目的结构。
在Main.StoryBoard中,删除现有的UIViewController,搜索UITableViewController,并将结果拖动到Storyboard。这将创建具有原型单元格的TableView控制器,如下图所示。
由于TableViewController包含原型单元格,无涯教程需要使用内容视图开发此原型单元。在此示例中,无涯教程正在开发具有title,subtitle和detail的原型单元。为此,无涯教程会将UILabel拖动到TableViewCell,如下图所示。
在这里,无涯教程还将需要一个UITableViewCell子类来包含这些UILabel连接。
MyTableViewCell.swift
import UIKit class MyTableViewCell: UITableViewCell { @IBOutlet weak var titleLbl: UILabel! @IBOutlet weak var subTitleLbl: UILabel! @IBOutlet weak var detailLbl: UILabel! override func awakeFromNib() { super.awakeFromNib() //Initialization code } override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) //Configure the view for the selected state } }
mytableviewcontroller.swift
import UIKit class MyTableViewController: UITableViewController { var titleArr = Array<String>() var subTitleArr = Array<String>() var detailArr = Array<String>() override func viewDidLoad() { super.viewDidLoad() subTitleArr = ["Goa","Himachal Pradesh","Uttarakhand","Andman and Nicobar", "Mumbai"] titleArr = ["Punjim","Shimla","Dehradun","PortBlair","maharashtra"] detailArr = ["7 m", "2276 m", "447 m","16 m","14 m"] } //MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { return 1 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //#警告执行不完整,返回行数 return titleArr.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell cell.titleLbl.text = titleArr[indexPath.row] cell.subTitleLbl.text = subTitleArr[indexPath.row] cell.detailLbl.text = detailArr[indexPath.row] return cell } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 130 } }
输出
与TableView不同,无涯教程还可以在TableViewControllers中嵌入静态单元格。要添加静态单元格,无涯教程需要在界面构建器的属性检查器中更改单元格类型,如下图所示。
默认情况下,它选择为动态原型。但是,无涯教程可以将其发给静态单元,如上面的图像所示。
如果无涯教程将其更改为静态单元格,则TableViewController将改变其内容以具有具有三个静态单元的静态部分,如下图所示。
无涯教程可以增加TableView中的部分数,也可以增加每个部分所包含的行数。如果无涯教程增加表查看中的部分数,无涯教程的TableViewController将看起来像以下图像。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)