Не удается получить reloadData для обновления таблицы до изменения ориентации, когда tableViewController внутри навигационного контроллера - PullRequest
2 голосов
/ 03 мая 2011

У меня есть tableViewController, который изначально был основным контроллером представления на экране.Когда это было так, я использовал метод willRotateToInterfaceOrientation: toInterfaceOrientation: duration, чтобы вызвать reloadData, чтобы моя таблица перезагрузила свое содержимое.Это сработало, как и ожидалось, в том случае, если при изменении ориентации содержимое таблицы будет перезагружено.

Позже мне нужно было поместить tableViewController в navigationController.Как только это будет сделано, метод willRotateToInterfaceOrientation: toInterfaceOrientation: duration, пока он еще вызывается, не обновляет содержимое таблицы должным образом.

Я предполагаю, что, поместив tableViewController в navigationController, это повлияло на порядок вращениясобытия отправляются, и когда вызывается метод reloadData, это слишком рано в жизненном цикле tableView, и изменение происходит до поворота.Я заверил, что метод willRotateToInterfaceOrientation: toInterfaceOrientation: duration вызывается с некоторыми инструкциями журнала.Кроме того, просто чтобы посмотреть, что произойдет, я реализовал метод didRotateFromInterfaceOrientation: fromInterfaceOrientation, в который я поместил оператор reloadData, и это правильно перезагружает содержимое таблицы.Однако это происходит после анимации вращения, а затем перерисовывает таблицу, которая создает заметное смещение пользовательского интерфейса.

Кто-нибудь еще видел такое поведение раньше или знает, как его исправить?

Спасибо за любыепредложения.

1 Ответ

2 голосов
/ 03 мая 2011

Вы также должны проверить другие методы вращения вида.См. «Ответ на просмотр событий вращения» в http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

Возможно, один из этих двух?

- didAnimateFirstHalfOfRotationToInterfaceOrientation:
- willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:
...