MVC最佳实践和视图控制器卸载?

时间:2017-03-20 02:32:33

标签: ios swift model-view-controller

为了卸载我的视图控制器,我决定将TableViewDataSource和TableViewDelegate从我的视图控制器分离到它们自己的类中。我对如何解决以下问题感到困惑:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)

    hideNavbar = true
    let vc = TopicSelectionViewController()
    self.navigationController?.present(vc, animated: true, completion: { 
        self.hideNavbar = false
    })

}
  1. 如果我把它放在TableViewDelegate自己的类中,那么最好的是什么 参考navigaitonController的做法?
  2. 引用正在使用的tableView的正确方法是什么 这个dataSource / delegate?
  3. 我可以在dataSource中使用网络层吗?
  4. 如果是这样,如何通知显示表视图的视图控制器在从服务器检索数据后更新它的视图?

1 个答案:

答案 0 :(得分:0)

  1. 引用navigationController?您不需要引用navigationController。任何视图控制器都会获得它的默认navigationController。

  2. 没有正确的方法来引用tableView。您可以使用任何适合您需要的,因为所有这些都来自 Apple 。您可以通过代码或 连接检查器 设置它的dataSource / delegate(或者,您可以使用控制点击+拖动机制)。

  3. UITableViewDataSource旨在处理表格视图的外观。 (有关详情,请参阅此处:UITableViewDataSourceUITableVIewDelegate)。那就是你配置表视图的样子。它与您的实际数据无关。但是,您可以配置网络层,以便在从服务器检索数据时更新TableView。当您准备好显示更新的数据时,您只需重新加载表格视图。