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

时间:2014-08-08 01:18:30

标签: ios uitableview swift uikit

我创建了一个主详细信息应用程序,该表加载了来自网址请求的数据 我调用reloadData在url请求后重新加载表。
它只在我滚动时重绘表格。
在检查重载数据之前,我检查了我的数组是否填充了正确的数据。我正在使用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 个答案:

答案 0 :(得分:4)

您应该从主线程中调用reloadData()