簡體   English   中英

UITableView最初不加載數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM