由于这个问题,我正在敲打一段时间。我详细说明了我的情景。
我有一个表格视图,我可以使用弹出窗口添加数据,弹出窗口会在单击导航栏中的“+”按钮时显示。我从popover获得了值,但是我遇到的是,收到的数据没有反映在tableview中。如果我来回移动它会显示出来。试图以不同的可能性重新加载表格,但没有任何作用。
如果您想要了解我的代码,可以在Data stored fails to display in the table view, in one to many relationship of core data?
获取任何人都可以解决我的问题,非常感谢帮助。
答案 0 :(得分:3)
这里的想法是为Add Teams popover视图控制器提供一种方法,告诉Team表视图控制器重新加载其表视图。
在Add Team VC swift文件中,定义一个协议:
protocol AddTeamsDelegateProtocol {
func didAddTeam()
}
在Add Team类中,添加以下类型的新delegate
属性:
var delegate : AddTeamsDelegateProtocol? = nil
在同一个班级中,在保存新团队时调用委托方法:
@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)
}
在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()
}
确保Team表视图控制器符合协议
class GroupTable: UITableViewController, NSFetchedResultsControllerDelegate, AddTeamsDelegateProtocol {
在转换(或显示)Add Teams popover之前(我在另一个问题中看不到你的代码是如何完成的),设置Add Teams控制器的委托:
addTeamsVC.delegate = self