使用Swift 3 Xcode 9.1
我有两个视图控制器(一个MainView和一个Table View)
问题:表视图从API加载数据并显示它,但这需要太长时间。我正试图在主控制器上发生负载。
我尝试创建自定义方法How to instantiate and load a view controller before segueing to it using swift
然而,表视图有太多功能,我不知道如何调用它。
表格视图代码:
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return cell
}
func loadData(){
//loads data
DispatchQueue.main.sync(execute:{
self.tableView.reloadData()
}
问题:以最佳方式创建自定义方法还是以其他方式创建?请注意我正在尝试做所有这些是主视图控制器,因此一旦我转到表视图,数据就可以加载。
答案 0 :(得分:0)
尝试将API调用放在Table View Controller Class的ViewDidAppear方法中。这样,应用程序将转向View Controller,然后调用数据。该应用程序将显示得更快,但需要相同的时间。这样,您还可以管理ViewDidLoad的超时和默认数据。
答案 1 :(得分:0)
谢谢大家的帮助!
我实际上整合了FryAnEgg的评论,并在我的主VC中创建了一个全局变量来加载API。
主要VC:
var Global X
class Main VC: UIViewController {
loadDataFunc(){
GlobalX.append(data)
}
}
的TableView:
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return GlobalX.count //calling Global Variable
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return cell
}
然后我在表视图控制器中调用了全局变量,它工作正常!
再次感谢大家
答案 2 :(得分:0)
要在segueing之前在主视图中加载tablview,您可以使用NSNotificationCenter。它在ViewDidLoad中调用,因此它将重新加载数据。