如何在UITableViewDataSource中重新加载数据

时间:2018-02-22 04:39:16

标签: ios swift uitableview

由于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协议时,可以轻松完成此操作,但我不希望这样。

1 个答案:

答案 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()
       }  
}

希望它有所帮助!!