加载远程数据后 swift alamofire 显示视图控制器

Posted

技术标签:

【中文标题】加载远程数据后 swift alamofire 显示视图控制器【英文标题】:swift alamofire show viewcontroller after remote data has loaded 【发布时间】:2016-06-21 21:39:55 【问题描述】:

我想知道如何在远程数据加载后显示 VC。我使用的不是tableView,而是普通的VC。

我的代码如下所示: viewDidLoad:

 override func viewDidLoad() 
        super.viewDidLoad()

        loadItemData(id)
 


func loadItemData(aId: Int) 
        Service.getItem(aId)  (JSON) -> () in

            self.iData = JSON

            self.configureData(self.iData)

        
    

func configureData(iData: JSON) 

        if let type = iData["item_type"].int 
            if let == 1 
               someButton.hidden = true
            

        

        if let title = iData["item_title"].string 
        titleLabel.text = title
        


会发生什么情况是,我的 VC 首先加载可见按钮和包含来自情节提要的“虚拟文本”的文本标签,然后当数据加载后,按钮将隐藏并且文本标签将更改。

所以我现在的问题是如何在数据加载之前隐藏我的 VC 或显示一些加载指示器。

同样值得一提的是,这是第二种观点。我的应用程序从 tableView 开始,当你点击一个单元格时,你最终会进入这个 VC。所以我也可以在单击单元格时加载数据,然后将其传递给这个 VC。

【问题讨论】:

【参考方案1】:

使用活动指示器更好,这里是如何做到的

首先确保在您的 VC 中添加 Activity Indicator

override func viewDidLoad() 
        super.viewDidLoad()

        self.myActivityIndicator.startAnimating()

        loadItemData(id)  



func loadItemData(aId: Int) 
        Service.getItem(aId)  (JSON) -> () in

        self.iData = JSON

        self.configureData(self.iData)
        self.myActivityIndicator.stopAnimating()
    

与其尝试隐藏 VC(尝试加载数据并传递它),它会让应用程序感觉没有响应,因为您必须等待数据加载,然后 VC 才会显示。

【讨论】:

以上是关于加载远程数据后 swift alamofire 显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

使用 alamofire + swift 获取动态加载的 html

NSMutableArray true 转换为 json 输出并在 Swift 3 中使用 Alamofire 将其发布到远程

Swift 2.0 + Alamofire 3.0 - 缓慢加载 JSON

Swift 2 - 如何从 Alamofire.responseJSON 获取数据

Swift ios alamofire 数据在 viewDidLoad 中第一次返回空

Swift Alamofire 异步问题