2016-05-09 34 views
1

由於這個問題,我一直在b my我的頭。我詳細說明了我的情況。解僱popover後,表視圖沒有得到更新?

我有一個表格視圖,可以使用點擊導航欄中的「+」按鈕顯示的彈出框添加數據。我從彈出窗口中獲取值,但在卡住的地方,收到的數據沒有反映在tableview中。如果我來回移動,它會顯示。試圖用不同的可能性重新加載表,但沒有任何工作。

如果你想要我的代碼味道,你可以在這裏Data stored fails to display in the table view, in one to many relationship of core data?

任何人都可以解決我的問題,幫助是非常讚賞。

+0

您使用哪種重新加載?當你打電話給你時,你是在主線程中? cellForRow ..會被調用嗎?當它發生時,你會返回正確的單元格嗎?需要更多的信息來幫助你 –

+0

在'團隊表視圖控制器'的viewWillAppear方法中,我正在從coredata中獲取數據。在「添加團隊」的提交方法中(這是一個按鈕,我可以點擊彈出窗口中的值)。 popover被解僱,但tableview仍然沒有得到最新值的更新。你能告訴我我想說的嗎? –

+0

我建議將您的代碼轉換爲使用提取的結果控制器(就像您爲成員所做的那樣),並實現委託方法來更新表視圖。 – pbasdf

回答

3

這裏的想法是爲Add Teams彈出窗口視圖控制器提供一種方法來告訴Team表視圖控制器重新加載其表視圖。

  1. 在添加團隊VC迅速文件,定義一個協議:

    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. 確保球隊表視圖控制器符合協議

    class GroupTable: UITableViewController, NSFetchedResultsControllerDelegate, AddTeamsDelegateProtocol { 
    
  6. 之前segueing至(或呈現)添加隊伍彈出窗口(我看不出在另一個問題中代碼如何完成),請設置添加隊控制器的代表:

    addTeamsVC.delegate = self 
    
+0

我做到了,通過NSNotificationCenter,無論如何感謝您的幫助:) –