2016-05-09 7 views
1

Я из-за этой проблемы извиняюсь за свое время. Я подробно излагаю свой сценарий.Вид таблицы не обновляется после отклонения popover?

У меня есть табличный вид, где я могу добавлять данные, используя popover, который отображается при нажатии кнопки «+» на панели навигации. Я получаю значения от popover, но там, где я застрял, полученные данные не отражаются в представлении таблицы. Если я двигаюсь назад и вперед, он отображается. Пытался перезагрузить таблицу разными возможностями, но ничего не работает.

Если вы хотите попробовать мой код, вы можете получить его здесь Data stored fails to display in the table view, in one to many relationship of core data?

Можно ли решить мою проблему, помощь очень ценится.

+0

Какую перезагрузку вы используете? Когда вы называете это вы в основной теме? Вызывается ли cellForRow ..? Когда это произойдет, верните ли вы правильную ячейку? Нужна дальнейшая информация, чтобы помочь вам –

+0

В режиме просмотра view viewWillAppear в представлении «Team table view» я извлекаю данные из coredata. В методе отправки команды «Добавить команды» (это кнопка, которую я нажимаю на присвоение значений в popover). Попутчик уволен, но табличное представление все еще не обновляется с последними значениями. Не могли бы вы получить мне то, что я пытаюсь сказать. –

+0

Я рекомендую преобразовать свой код, чтобы использовать выбранный контроллер результатов (как и для членов), и реализовать методы делегатов для обновления представления таблицы. – pbasdf

ответ

3

Идея здесь заключается в том, чтобы предоставить диспетчеру добавления команды «Добавить команды», чтобы сообщить контроллеру таблицы таблиц Team 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. В контроллере представления таблицы команд, реализовать 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 (или представления) Добавить команды popover (я не мог понять, как это делается в вашем коде в другом вопросе), установите делегат контроллера Add Teams:

    addTeamsVC.delegate = self 
    
+0

Я сделал это через NSNotificationCenter, в любом случае спасибо за помощь :) –