[英]UITableView Not Loading Data Initially
最初查看時,我的UITableViewController
不包含任何數據。 但是,一旦我轉到另一個UIViewController
,數據就在動畫仍處於動畫狀態時出現,然后數據在那里。 因此,要實際查看數據,我需要轉到另一個ViewController,然后再返回到UITableViewController
。 我正在使用Parse.com框架。 以下代碼是初始ViewController
代碼,它也是一個UITableViewController
,可以隔離最初不包含任何數據的UITableViewController
。 感謝您的幫助,我是IOS開發的新手,因此請盡快做出答案。
編輯:許多答案或評論都假定已檢索到數據,而只是未將其加載到UITableViewController
。 但是,問題在於,在完成搜索時尚未檢索到數據。 謝謝
override func prepareForSegue(segue: UIStoryboardSegue, sender:AnyObject?){
var cell = sender as UITableViewCell
var text = cell.textLabel!.text
currentScreen=text!
println(currentScreen)
groupConversation=[]
var messageDisplayOne = PFQuery(className:currentScreen)
messageDisplayOne.selectKeys(["userPost"])
messageDisplayOne.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil{
println("Type message \(groupConversation)")
for object in objects {
var textObject = object["userPost"] as String
groupConversation.append(textObject)
}
} else {
// Log details of the failure
}
}
}
正如Rakeshbs在評論中所說,這里發生的是您的查詢正在后台線程上執行。 這意味着視圖將在查詢返回並執行其回調之前加載(加載數據)。
為了解決這個問題,一旦處理完數據,我們可以在成功回調的末尾使用tableview.reloadData來重新加載表。 代碼如下:
注意:請參見Rakeshbs答案以獲得更干凈的版本,這里的唯一區別是我解包了UIStoryboardSegue,因為在某些情況下訪問屬性時,解包時會引起問題。
override func prepareForSegue(segue: UIStoryboardSegue!, sender:AnyObject?){
var cell = sender as UITableViewCell
var text = cell.textLabel!.text
currentScreen=text!
println(currentScreen)
groupConversation=[]
var messageDisplayOne = PFQuery(className:currentScreen)
messageDisplayOne.selectKeys(["userPost"])
messageDisplayOne.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil{
println("Type message \(groupConversation)")
for object in objects {
var textObject = object["userPost"] as String
groupConversation.append(textObject)
}
var destinationController = segue.destinationViewController as UITableViewController
destinationController.tableView.reloadData()
} else {
// Log details of the failure
}
}
}
您是否正在進入UITableViewController?
override func prepareForSegue(segue: UIStoryboardSegue!, sender:AnyObject?){
//Start Spinner
var cell = sender as UITableViewCell
var text = cell.textLabel!.text
currentScreen=text!
println(currentScreen)
groupConversation=[]
var messageDisplayOne = PFQuery(className:currentScreen)
messageDisplayOne.selectKeys(["userPost"])
messageDisplayOne.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]!, error: NSError!) -> Void in
//Stop Spinner
if error == nil{
println("Type message \(groupConversation)")
for object in objects {
var textObject = object["userPost"] as String
groupConversation.append(textObject)
}
var tableViewController = segue.destinationViewController as UITableViewController
tableViewController.tableView.reloadData()
} else {
// Log details of the failure
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.