UITableViewController 和 UIViewController 的区别是什么?
UITableViewController 和 UIViewController 是 iOS UIKit 框架中的两个不同对象。两者用于不同的目的。
UIViewController 类管理一个视图控制器,它负责视图控制器内发生的事件。此类知道视图控制器上发生的事件,例如 ViewDidLoad、ViewWillApper、ViewDidAppear、ViewWillDisapper、ViewDidDisapper。
而 UITableViewController 负责管理表格、其数据及其事件,使用 UITableViewDataSource 和 UITableViewDelegate。
UITableViewController 符合 UIViewController、UITableViewDataSource 和 UITableViewDelegate 以实现表格视图。
以下是一个实现 UIViewController 的类的示例。
class ViewController : UIViewController { @IBOutlet weak var sampleView: UIView! override func viewDidLoad() { } }
UITableViewController 也符合 UIViewController,因此它可以实现 UIViewController 的方法。如果该 ViewController 除了表格视图之外没有任何其他内容,则主要使用 UITableViewController。
如果视图控制器除了 tableView 之外还有其他内容,我们通常将其符合 UIViewController 并实现表格视图的协议,即 UITableViewDataSource 用于为该表格分配一些数据源,以及 UITableViewDelegate 用于处理该表格视图上的事件。
实现 UITableViewDataSource 或 UITableViewDelegate 的 UIViewController 示例是
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate { override func viewDidLoad() { } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) −> Int { // } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) −> UITableViewCell { // } }
除了上述内容外,下面还提到了一些表格视图的其他属性。
当表格视图即将出现时,它会重新加载其数据。
表格视图在出现时默认清除其选择。
当表格视图出现在屏幕上时,其滚动指示器会闪烁。这是在 viewDidAppear() 方法中完成的。