我正在执行重构,因为我的UITableViewController胀气非常严重。我要做的第一件事是像这样从表视图控制器中重构数据源:

// In my UITableViewController
let ds = MyDataSource()

func viewDidLoad() {
  tableView.dataSource = ds
}


在我的数据源类中,我想使用一些我认为应该属于表视图控制器的逻辑。

class MyDataSource: UITableViewDataSource {
  func numberOfSections(in tableView: UITableView) -> Int {
    // I want to use the variable showMore here
    return showMore ? 2 : 1
  }

  // More data source doe
}


变量showMore是在我的表视图控制器中定义的布尔变量,并由节的页脚视图中的按钮更新。

然后的问题是,如果showMore属于表视图控制器,如何从我的数据源类访问它?如果不属于
表视图控制器,它在哪里,为什么?

谢谢!

最佳答案

首先想到的是-我只是在打字,而不是用Xcode编写...

// footerButtonTap
if let ds = tableView.dataSource as? MyDataSource {
    ds.showMore = !ds.showMore
    tableView.reloadData()
}


或者遵循这些原则的东西可能符合您的需求。

10-06 15:44