2016-09-18 1 views
2

У меня есть приложение, которое импортирует XML-файл при первом запуске для создания таблицы. Это отлично работает в iOS 9. В iOS 10 он по-прежнему импортирует все данные правильно и правильно выполняет выборку, но таблица не отображает элементы, пока я не заставлю приложение покинуть приложение и не открою его снова. Вместо этого он просто показывает первый элемент из xml-файла. Когда я нажимаю на элемент, он фактически переносит меня в первый элемент в упорядоченном списке из 298 элементов (это другой элемент).UITableview Больше не обновляется в iOS 10 после первоначального импорта

Ссылка на видео показывая вопрос: reloading table issues

Заказ:

  • 1) App открывает на начальном запуске, предложит пользователю "импорт данных". Parser используется для импорта XML и успешно проходит через XML (я могу распечатать журнал каждого элемента).
  • 2) Приложение сохраняет importContext и вызывает tableView.reloadData
  • 3) На данный момент данные должны быть в таблице. Навигационный заголовок включает в себя счет, который является правильным (298 предметов). Однако в таблице только 1 элемент, первый элемент из файла XML .
  • 4) Если я нажму на этот элемент, он возьмет меня, что будет первый элемент в списке из 298 предметов (НЕ элемент фактически находится в таблице ).
  • 5) Интересно, что если я выполняю поиск, имя элемента 1 не изменяется, но если я нажму на него, он доставит меня к пункту I . Если я ищу другой предмет и нажму на элемент 1 в таблице, он доставит меня к новому элементу (но все же никогда не меняет текст существующего элемента) - так что все 298 предметов есть, просто не отображается в таблице.

Я попытался назвать

self.viewDidLoad 

и

self.tableView.reloadData() 

и

dispatch_async(dispatch_get_main_queue()) { 
      self.tableView.reloadData() 
     } 

и призывая все три указанных выше функций с помощью NSNotificationCenter ПОСЛЕ синтаксического анализа в комплекте с

NSNotificationCenter.defaultCenter().postNotificationName("performFetch", object: nil) 
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.test), name: "performFetch", object: nil) 

Но ничто фактически не сбрасывает один элемент в таблицеView (который, случается, является первым элементом в XML-файле. Опять же, все данные есть, просто невидимы.

Если я заставляю покинуть приложение и открывать его обратно, все данные там и видны и работают нормально. Есть ли другой/новый способ принудительного обновления таблицы в iOS 10? Опять же, эта функция отлично работала в ios 9, код не менялся, но в ios 10 он терпит неудачу. Я не обновился до Swift 3.0, потому что это будет боль.

+1

Наличие аналогичной проблемы с iOS 10.0.2 (это фактически начало происходить с этой версией), но если я прокручу таблицу, она загрузится (с некоторыми глюками, но это так). – dccarmo

+0

@dccarmo от глюка, вы имеете в виду повторяющиеся данные? вот проблема, с которой я столкнулся сейчас – Multinerd

+0

@Multinerd Я не совсем помню, но я не думаю, что это повторялось. – dccarmo

ответ

0

Вы выполняете настройку своей ячейки в cellForRowAtIndexPath: метод? У меня была аналогичная проблема, и я решил ее переместить код в willDisplayCell :.

+1

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