我正在做一个重构因为我的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
属于表视图控制器,我该如何从我的数据源类访问它?如果它不属于
表视图控制器,它属于哪里,为什么?
谢谢!
答案 0 :(得分:0)
首先想到的是 - 我只是打字,而不是写在Xcode中......
// footerButtonTap
if let ds = tableView.dataSource as? MyDataSource {
ds.showMore = !ds.showMore
tableView.reloadData()
}
或者沿着这些方向的东西可能符合你的需要。
答案 1 :(得分:0)
UITableViewController是Apple方便实现的UIViewController,它包含tableView而不是视图,并且立即符合UITableViewDataSource
和UITableViewDelegate
。我建议你只使用一个UIViewController
并添加一个tableView,然后通过将表的委托和数据源设置为MyCustomTableController
来继续,这将符合UITableViewDataSource
和{ {1}}。所有逻辑都应在控制器内部处理。