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 滚动之前不会重新加载