UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载

Posted

技术标签:

【中文标题】UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载【英文标题】:UITableView doesn't reload until scrolled using Master Detail App in Swift 【发布时间】:2014-08-08 01:18:29 【问题描述】:

我创建了一个主从应用程序,表格中加载了来自 url 请求的数据。 我在 url 请求后调用 reloadData 重新加载表。 当我滚动它时,它只会重绘表格。 在调用重新加载数据之前,我检查了我的数组是否填充了正确的数据。我正在使用UISearchBar 来查找数据。 (我没有使用搜索显示控制器,只是一个UISearchBar)。当我加载数据并滚动时,它可以工作。但是,当我调用reloadData 时,该表不会自行清理和加载数据。这是我的代码的要点。我正在使用 Google Places API 靠近披萨店。

MasterViewController.swift

    func searchForPizzaWith(#lat:JSValue,long:JSValue) ...
        places = []
    var nsURL = NSURL(string: pizzaURL)
    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL) 
        (data,response,error) in
        var placeResponse = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
        ...
        // some jason parsing here. places array is created. 
        ...
            for place in places.array.value! 
                let place = Place(name: place["name"].string.value!,
                    icon: place["icon"].string.value!,
                    address: place["vicinity"].string.value!,
                    placeID: place["id"].string.value!)
                self.places.append(place)
                println("added")
            
        
        println(self.places.count)  // prints 20
        self.tableView.reloadData()
    

    task.resume()

【问题讨论】:

【参考方案1】:

你应该从主线程调用reloadData()

【讨论】:

对我不起作用 :( override func viewDidAppear(animated: Bool) dispatch_async(dispatch_get_main_queue(), self.myTable.reloadData() ) @AlbertBori 您是否连接了数据源并委托给了正确的类? 是的。最初查看时加载正常,但从另一个视图展开时显示空白(直到您滚动)。 @AlbertBori 您可能想打开一个新问题,然后将相关代码复制并粘贴到那里。

以上是关于UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Swift 在 UITableView 中的部分标题的 UIView 中设置 UILabel 的文本

Swift3:使用外部数据库中的数据填充 UITableView?

如何在 swift iOS 中的 UIAlertcontroller 中显示 UITableview?

UITableView 在使用 Swift 中的 Master Detail App 滚动之前不会重新加载

更改 UITableView 中的搜索栏高度(swift 5)

如何在 swift 中增加 ScrollView 中的 UITableView 高度