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() 方法中完成的。

更新于:2019年7月30日

480 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告