在popToRootViewController之后,NavigationController不会重新加载tableView数据

时间:2014-09-01 14:33:15

标签: ios uinavigationcontroller swift tableview

抱歉我的英文

在我的应用中,我有一个登录表单。如果用户名和密码好, 用户名存储在keyChain中,并使用以下命令返回主viewController:self.navigationController.popToRootViewControllerAnimated(true)

数据由php文件加载,该文件使用用户名从该用户名获取数据

在主viewController中,它们是一个包含数据的tableView

但问题是连接后,tableView不会改变。它只会在重新启动应用程序时更改

获取数据的代码:

@IBOutlet var tblTask: UITableView!

let bodyData = "username=" + username!

        let URL: NSURL = NSURL(string: "link to php file")
        let request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
        request.HTTPMethod = "POST"
        request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue())
        {
            (response, data, error) in
            var output = NSString(data: data, encoding: NSUTF8StringEncoding)

            var array = self.JSONParseArray(output)

            for var i = 0, a = 1 ; i < array.count ; i += 2, a += 2 {

                if(a > 0 && i > 0)
                {
                    self.arrayDate.append(array[i])
                    self.arrayPoid.append(array[a])
                }
            }
            for var i = 0; i < self.arrayDate.count ; i++ {
                self.arrayPoid[i] += " livres"
            }


            self.tblTask.reloadData()
        }

2 个答案:

答案 0 :(得分:1)

我认为Unwind Segues就是您所需要的。您只需几步即可设置它们。在rootViewController中添加此方法:

@IBAction func reset(segue: UIStoryboardSegue) {
    tableView.reloadData()
}

在Interface Builder中,在任何需要返回rootViewController的viewController中创建UIButtons。然后将这些UIButtons中的每一个链接到各自viewController的红色“退出”按钮,并选择重置:在出现的弹出菜单中(参见下图)。

enter image description here

enter image description here

当您点击这些按钮时,您将返回到您的rooViewController并执行reset:(重新加载您的tableView)。

有关展开细分的更多详细信息,请参阅WWDC 2012会话视频“在您的应用中采用故事板”。[从38分钟开始]。

答案 1 :(得分:0)

尝试self.tableView.reloadData()的{​​{1}}方法中的UITableViewController来电。这解决了吗?