UITableView未填充

时间:2017-05-04 00:50:54

标签: ios swift uitableview

我有一个抓取JSON的方法,并将JSON中的各个值附加到数组中,如下所示:

internal let methods = Methods()
var countryData = [""]
@IBOutlet weak var countryTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    displayCountries()
}

func displayCountries() {

    // Wait for task to complete before grabbing JSON
    methods.getCountriesData {() -> () in

        for (_, value) in self.methods.getJSON() {
            self.countryData.append(String(describing: value))
        }

        DispatchQueue.main.async {
            self.countryTableView.reloadData()
            print(self.countryData)
        }

    }

}

我也像这样声明了UITableView委托:

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return countryData.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")! as UITableViewCell

    let row = indexPath.row
    cell.textLabel?.text = self.countryData[row]

    return cell
}

print(self.countryData)打印日志中的所有国家/地区(100个国家/地区)但是由于某种原因,这些国家/地区没有显示在UITableView中,是否有人理解为什么?< / p>

1 个答案:

答案 0 :(得分:0)

您需要指定表视图的数据源。这可以在代码或故事板中完成。

代码:

countryTableView.dataSource = self

您还需要使您的数据源对象符合UITableViewDataSource协议:

MyViewController: UIViewController, UITableViewDataSource {

由于数据是字符串数组和视图控制器上的属性,因此这应该可以正常工作。

在故事板中:

只需将dataSource出口拖到提供数据的对象(在此示例中为视图控制器):

screenshot of the data source outlet connection