由于UITableView
位于UIViewController
,我创建了一个符合UITableViewDataSource
协议的类,并将其附加到UIViewController
的{{1}}中的表格视图中下面。
在UIViewTableController中委托表视图:
viewDidLoad()
的UIViewController:
class TableViewController: NSObject, UITableViewDataSource, UITableViewDelegate {
var data
// where should I do this task and how can i reload data after task?
data = asyncFuncToGetData()
// this is not working
override init() {
data = asyncFuncToGetData()
}
func tableView() {
// uses variable data
}
}
我必须从服务器获取数据,因为表需要它。那我该怎么办呢?当class ContainerViewController: UIViewController {
@IBOutlet weak var mainTableView: UITableView!
let delegate = TableViewController()
override func viewDidLoad() {
super.viewDidLoad()
mainTableView.dataSource = delegate
mainTableView.delegate = delegate
}
}
符合UITableViewController
协议时,可以轻松完成此操作,但我不希望这样。
答案 0 :(得分:1)
您可以在 ViewDidLoad 中获取数据,然后将其提供给您的代理人:
override func viewDidLoad() {
super.viewDidLoad()
mainTableView.dataSource = delegate
mainTableView.delegate = delegate
asynFuncToGetData( { newData in
//Assign New Data to your delegate class's data
self.delegate.data = newData
//Call Reload data on tableView's instance
self.delegate.tableView()
}
}
希望它有所帮助!!