首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >刷新UITableViewController数据

刷新UITableViewController数据
EN

Stack Overflow用户
提问于 2017-11-22 05:18:26
回答 1查看 124关注 0票数 0

我有两个控制器,DashboardControllerLocateVehicleController.有UITableViewController.的LocateVehicleController

在DashboardController中,按下按钮,我正在进行API调用和获取数据。并向LocateVehicleController发送数组。

代码语言:javascript
运行
复制
 let locateVehicleStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
 let locateVehicleController = locateVehicleStoryboard.instantiateViewController(withIdentifier: "tempID") as? LocateVehicle
 self.present(locateVehicleController!, animated: true, completion: nil)
 locateVehicleController?.dataArray = self.locateVehicleDataArr
 locateVehicleController?.tableView.reloadData()

在LocateVehicleController中,我有刷新按钮,如果我按下刷新按钮,我需要更新使用DashboardController调用数据的tableview控制器数据。

根据我的理解,当我按下刷新按钮时,相同的API调用将被调用。请帮我解决这个问题。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-22 05:29:07

我会将调用这个API的逻辑移到另一个类。将该类注入DashboardControllerLocateVehicleController,并使用它们获取数据。就像这样:

代码语言:javascript
运行
复制
struct Vehicle {
}

protocol VehicleDataFetcherProtocol {
    func getVehicleData(completionHandler:([Vehicle])->()) // assuming the data is in form of an Array of a class/struct Vehicle
}

class VehicleDataFetcher: VehicleDataFetcherProtocol {
    // Hit API, get data and call the completion  hanlder
    func getVehicleData(completionHandler:([Vehicle])->()) {

    }
}

class DashboardController:UIViewController {
    private var vehicleDataFetcher: VehicleDataFetcher!

    func injectVehicleDataFetcher(dataFetcher:VehicleDataFetcher) {
        self.vehicleDataFetcher = dataFetcher
    }

    func presentLocateVehicle() {
        let locateVehicleStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let locateVehicleController = locateVehicleStoryboard.instantiateViewController(withIdentifier: "tempID") as? LocateVehicleController
        self.present(locateVehicleController!, animated: true, completion: nil)
        locateVehicleController?.injectVehicleDataFetcher(dataFetcher: self.vehicleDataFetcher)
        locateVehicleController?.dataArray = self.locateVehicleDataArr
        locateVehicleController?.tableView.reloadData()
    }
}

class LocateVehicleController:UIViewController {
    private var vehicleDataFetcher: VehicleDataFetcher!

    func injectVehicleDataFetcher(dataFetcher:VehicleDataFetcher) {
        self.vehicleDataFetcher = dataFetcher
    }


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47427312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档