解雇popover后表格视图没有得到更新?

时间:2016-05-09 15:11:08

标签: swift core-data tableview uipopovercontroller

由于这个问题,我正在敲打一段时间。我详细说明了我的情景。

我有一个表格视图,我可以使用弹出窗口添加数据,弹出窗口会在单击导航栏中的“+”按钮时显示。我从popover获得了值,但是我遇到的是,收到的数据没有反映在tableview中。如果我来回移动它会显示出来。试图以不同的可能性重新加载表格,但没有任何作用。

如果您想要了解我的代码,可以在Data stored fails to display in the table view, in one to many relationship of core data?

获取

任何人都可以解决我的问题,非常感谢帮助。

1 个答案:

答案 0 :(得分:3)

这里的想法是为Add Teams popover视图控制器提供一种方法,告诉Team表视图控制器重新加载其表视图。

  1. 在Add Team VC swift文件中,定义一个协议:

    protocol AddTeamsDelegateProtocol {
        func didAddTeam()
    }
    
  2. 在Add Team类中,添加以下类型的新delegate属性:

    var delegate : AddTeamsDelegateProtocol? = nil
    
  3. 在同一个班级中,在保存新团队时调用委托方法:

    @IBAction func submit(sender: AnyObject) {
        let entity = NSEntityDescription.entityForName("Teams", inManagedObjectContext: managedObjectContext)
        let team = Teams(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
        team.teamName = teamNamePO.text
        team.teamImage = teamImagePO.image
        do{
            try managedObjectContext.save()
        } catch let error as NSError{
            print("\(error), \(error.userInfo)")
        }
        self.delegate?.didAddTeam()
        dismissViewControllerAnimated(true, completion: nil)
    }
    
  4. 在Team表视图控制器中,实现didAddTeam()方法:

    func didAddTeam() {
        let request = NSFetchRequest(entityName: "Teams")
        do{
            teamData = try managedObjectContext.executeFetchRequest(request) as! [Teams]
        } catch let error as NSError {
            print("\(error), \(error.userInfo)")
        }
        self.tableView.reloadData()
    }
    
  5. 确保Team表视图控制器符合协议

    class GroupTable: UITableViewController, NSFetchedResultsControllerDelegate, AddTeamsDelegateProtocol {
    
  6. 在转换(或显示)Add Teams popover之前(我在另一个问题中看不到你的代码是如何完成的),设置Add Teams控制器的委托:

    addTeamsVC.delegate = self