iPhone - строки UITableViewController и Core Data, повторяющиеся в tableView - PullRequest
1 голос
/ 28 января 2011

Я новичок в Какао и Базовых данных и столкнулся со странной проблемой. Я успешно создал модель Core Data, импортировал данные, создал пользовательский интерфейс (контроллер навигации, tableViewController с searcDdisplayController), но теперь я застрял в одной проблеме. Если я реализую UITableViewController (без UITableView в nib файле), результаты, извлеченные из fetchedResultsController , будут странными - количество строк правильно (500 строк), но они повторяются - всего 8 разных строк.

Однако я смог решить эту проблему, добавив @synthesize tableView; в файле .m .

Затем я столкнулся с другой проблемой - когда я щелкаю строку и нажимаю подробное представление, а затем нажимаю кнопку «Назад» на контроллере навигации, выбранная строка в табличном представлении по-прежнему выбрана.

Надеюсь, мне ясно, что случилось. Позвольте мне резюмировать: Если я не поставлю @synthesize tableView; в верхней части файла реализации отмена выбора строки работает нормально, но результаты неверны - 8 строк (из 500) повторяются в tableView. Если я добавлю @synthesize в файл, данные в табличном представлении верны, но при возврате к табличному представлению с помощью контроллера навигации анимация отсутствует.

Я также пытался поместить UITableView в nib-файл listviewcontroller , но результаты были такими же - отмена выделения строки. Я также пытался отменить выбор строки в делегате viewWillAppear, но indexPath of the indexPathForSelectedRow равен null .

О, и я использую NSFetchedResultsController . Как я уже сказал - извлеченные результаты верны, но, похоже, они неправильно подаются в табличное представление (если оно не синтезировано ..)

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 января 2011

Возможно, я смогу решить вашу проблему с выделением строк, но вам нужно будет включить некоторые примеры кода, чтобы мы могли помочь вам с другими элементами ...

Чтобы отменить выбор строки, вы можете вызвать метод [deselectRowAtIndexPath: animated:] это позволит вам отменить выбор строки до или после того, как вы выдвинете свой контроллер подробного представления из вашего делегата выбора tableView. Справочник по табличному виду

0 голосов
/ 29 января 2011

Спасибо, что ответили!

Хм ... Возможно, я нашел решение, но я не уверен, что оно правильное ... Я реализую UITableViewController в моем новом классе, но на самом деле я использую новый UITableView (tableView2) для выборки данных. В файле пера я создал UITableViewController, установите имя класса для моего пользовательского класса, НО я не связывал табличное представление в Интерфейсном Разработчике с моим недавно созданным tableView2. Я надеюсь, что вы сможете понять .. Это довольно сложно, весь этот материал: S

Так что, если я правильно понял - если я реализую UITableViewController, мой класс автоматически получит self.tableView? Но, как я уже сказал в своем вопросе, если я не синтезирую свойство в файле .m, контроллер не сможет автоматически отменить выбор строки ... но если я это сделаю, данные будут неправильными и будут повторяться ... Возможно, есть проблема в cellForRowAtIndexPath, где я получаю свои ячейки из self.tableView..но это не логично: S

В любом случае, теперь анимация отмены выбора строк работает без моего вмешательства, и отображаемые данные верны. Я подозреваю, что UITableViewController имеет некоторые другие методы, которые должны быть перезаписаны при использовании NSFetchedResultsController.

Как вы думаете, мой метод неверен? Имеете новый UITableView в моем пользовательском классе UITableViewController?

...