所以,我有方法loadData()
从parse.com
我应该在表格视图中显示所有图像。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ReusableCell", forIndexPath: indexPath) as! LeaguesTableViewCell
loadData { (success) in
if success {
cell.leagueImage.image = UIImage(data: self.leaguesImage[indexPath.row])
cell.leagueNameLabel.text = self.leagues[indexPath.row]["name"] as? String
} else {
cell.leagueNameLabel.text = "Wait"
}
}
return cell
}
它不起作用。我在viewDidLoad()
中调用我的函数,但它也不正确,表视图为空。
我
答案 0 :(得分:3)
将数据加载到UITableView的基本过程是:
numberOfSectionsInTableView:
方式返回部分的数量:在您的情况下,只有1个部分。tableView:numberOfRowsInSection:
中的行数:在您的情况下,如果加载了数据,则返回联赛数量。如果未加载数据,则返回1,以便表视图至少有一行显示"等待"消息。leagues
和leaguesImage
。示例:
private var loaded = false
override func viewDidLoad() {
super.viewDidLoad()
loaded = false
loadData() { success in
NSOperationQueue.mainQueue().addOperationWithBlock() {
self.loaded = success
self.tableView.reloadData()
}
}
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection: Int) -> Int {
if loaded {
return leagues.count
}
else {
return 1
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ReusableCell", forIndexPath: indexPath) as! LeaguesTableViewCell
if loaded {
cell.leagueImage.image = UIImage(data: self.leaguesImage[indexPath.row])
cell.leagueNameLabel.text = self.leagues[indexPath.row]["name"] as? String
}
else {
cell.leagueNameLabel.text = "Wait"
}
return cell
}
答案 1 :(得分:1)
首先尝试设置委托和数据源。如果您有除视图控制器之外的单独数据源,请保留它,否则您将无法获得任何回调。