我目前正在使用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没有重新加载......
非常感谢一些帮助,提前谢谢!