【问题标题】:Tableview isnt reloading dataTableview没有重新加载数据
【发布时间】:2016-03-06 14:05:00
【问题描述】:

我正在尝试从服务中获取一些数据并尝试将其显示到表格视图中,一切正常,但第一次没有显示数据。

 override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        if NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") != nil{


            arr = NSUserDefaults.standardUserDefaults().objectForKey("PostedQuesIds") as? NSArray

        }
        else{

            print("I am getting no IDS !!!")
        }

        if self.arr != nil{

            for quesIds in self.arr!{

                print("ids '\(quesIds)'")

                var url = "http://some.com/forum"
                url.appendContentsOf(quesIds as! String)
                WebHandler.sharedInstance.GET_REQ(url)

                self.dataArray = WebHandler.sharedInstance.questionDetails?.objectForKey(quesIds) as? NSMutableArray


            }
        }

我试过了

//NO LUCK WITH THE FOLLWING CODE, IT IS RUNNING AS EXPECTED BUT DATA IS NOT //SHOWN
//        dispatch_async(dispatch_get_main_queue(), { () -> Void in
//            
//            
//        
//            print("I am called wtf?")
//            self.tableView.reloadData()
//            
//        })

然后我想通过NSNotification来做;我做了什么:

override func viewWillAppear(animated: Bool) {

    nc.addObserver(self, selector: "reload", name: "reloadTable", object: nil)
}

func reload(){
//tried in main queue and out
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        print("I am called wtf?")
        self.tableView.reloadData()
    })

}

现在我不知道它有什么问题,仅供参考,我每次都从 webhandler 类发布 nsnotification,它的工作方式与我的日志中一样,我收到了消息。请帮助我,您的任何帮助将不胜感激。

【问题讨论】:

  • dataArray 实际上是否包含任何数据?
  • 你能展示代码你是如何在 UITableViewDataSource 方法中分配数据的吗?
  • 是的,它包含我有完整的日志@Lamar
  • 这是完美的,因为当我第二次访问同一个屏幕时,它显示了从服务器 @SaqibOmer 获取的完整数据

标签: ios swift uitableview reload


【解决方案1】:

我看到两个可能的问题:

  1. 您的WebHandler.sharedInstance.GET_REQ() 方法可能是异步的。如果我的猜测是正确的,self.tableView.reloadData() 在您的 Web 服务完成获取数据并将其分配给 self.dataArray 之前被调用。您可能需要等待它完成,然后再致电 reloadData()
  2. 不知道为什么for 循环中有以下行:

    self.dataArray = WebHandler.sharedInstance.questionDetails?.objectForKey(quesIds) as? NSMutableArray
    

    您确定不想附加到dataArray 吗?

【讨论】:

  • 如果是aysnc,我该如何等待?以及它在循环中的原因是我必须获取我的数组中存在的所有 id 的数据。
  • 您可以添加一个在您的网络服务完成后执行的回调。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多