在划分

时间:2017-12-04 16:20:07

标签: ios json swift tableview loading

使用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()
}

问题:以最佳方式创建自定义方法还是以其他方式创建?请注意我正在尝试做所有这些是主视图控制器,因此一旦我转到表视图,数据就可以加载。

3 个答案:

答案 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中调用,因此它将重新加载数据。