UITableView请求后不重新加载数据

时间:2016-09-05 23:26:37

标签: ios swift multithreading uitableview reloaddata

我目前正在使用Swift开发应用程序。以下是总结: 我点击一个顶部栏按钮时左侧出现一个菜单,再次点击就会消失。在这个菜单下面,我有多个ContainerViews根据菜单上的点击进行更改,所有的ContainerViews都被隐藏,除了想要的那个。到目前为止,没有问题。 但是,容器有一个嵌入到TableViewController的segue,它在json中显示来自我的服务器的数据。 因此,这可能是问题,当我点击菜单显示这个容器时,我想获取我的数据并在TableView上显示它。但是,从不调用方法cellForRowAtIndexPath,而调用numberOfRowsInSection(并返回大于0)。

我知道我的tableViewController在应用程序启动时加载,即使它是初始ViewController中的容器。

当用户点击菜单时,这是我的代码:

indexQuestionsContainer.alpha=1;
var questionsIndexViewController : QuestionsListTableViewController = QuestionsListTableViewController();
for controller in self.childViewControllers
{
    if (controller.title=="indexQuestions")
    {
        questionsIndexViewController = controller as! QuestionsListTableViewController
    }
}
questionsIndexViewController.getQuestions(); 

这是我的getQuestions()代码:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
        data, response, error in

        if error != nil
        {
            print("error=\(error)")
            return
        }

        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding);
        NSOperationQueue.mainQueue().addOperationWithBlock {
            do{
                let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! NSArray
                for item in json
                {
                    let item = item as! [String:AnyObject];
                    let id:Int? = Int(item["id"] as! String);
                    let text = item["text"] as! String;
                    var q = Question();
                    q.idAuthor=id!;
                    q.text=text;
                    self.questions.append(q);
                }
            }catch {
                print("Error with Json: \(error)")
            }
            dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_HIGH, 0), {
                dispatch_async(dispatch_get_main_queue(),{
                    self.tableView.reloadData()
                })
            })
        }

    }
    task.resume()

numberOfRowsInSection返回self.questions.count,其为> 0(使用debug进行校对)和numberOfSections返回1 ..

我的tableView没有重新加载......

非常感谢一些帮助,提前谢谢!

0 个答案:

没有答案