UITableViewController和UIViewController有什么区别?
UItableViewController和UIViewController是iOSUIKit框架的两个不同对象。两者都有不同的用途。
UIViewController类管理ViewContoller,后者负责该View控制器内发生的操作。此类知道在视图控制器上发生的动作,例如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一致,并实现TableView的协议,即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()
方法内完成的。