這裏的想法是爲Add Teams彈出窗口視圖控制器提供一種方法來告訴Team表視圖控制器重新加載其表視圖。
在添加團隊VC迅速文件,定義一個協議:
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()
}
確保球隊表視圖控制器符合協議
class GroupTable: UITableViewController, NSFetchedResultsControllerDelegate, AddTeamsDelegateProtocol {
之前segueing至(或呈現)添加隊伍彈出窗口(我看不出在另一個問題中代碼如何完成),請設置添加隊控制器的代表:
addTeamsVC.delegate = self
您使用哪種重新加載?當你打電話給你時,你是在主線程中? cellForRow ..會被調用嗎?當它發生時,你會返回正確的單元格嗎?需要更多的信息來幫助你 –
在'團隊表視圖控制器'的viewWillAppear方法中,我正在從coredata中獲取數據。在「添加團隊」的提交方法中(這是一個按鈕,我可以點擊彈出窗口中的值)。 popover被解僱,但tableview仍然沒有得到最新值的更新。你能告訴我我想說的嗎? –
我建議將您的代碼轉換爲使用提取的結果控制器(就像您爲成員所做的那樣),並實現委託方法來更新表視圖。 – pbasdf