Я испытываю странную проблему с контроллерами с раздельными изображениями, и мне удалось очень легко воссоздать проблему в совершенно новом приложении. Если вы поворачиваете iPhone 6 Plus в ландшафт, главный и подробный контроллер просмотра становятся видимыми на экране, но если вы затем повернете назад к портрету и переместите вкладки, а затем поверните на пейзаж, контроллер подробного представления будет полностью серым, как будто ничего нет. Это регистрируется на консоли: <Error>: CGImageCreate: invalid image size: 0x0
Я хотел бы знать, знаете ли вы причину или что можно сделать, чтобы исправить эту ошибку.Поворот iPhone 6 Plus приводит к просмотру контроллера серых деталей?
Установка является UITabBarController
с тремя вкладками, каждая вкладка по умолчанию UISplitViewController
вытаскивали с помощью Interface Builder. Подкласс UISplitViewController
и измените 3 разделенных представления на этот класс. Установите делегат контроллера разделенного представления на себя в viewDidLoad
. Затем верните YES с splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
. Это устанавливает его так, что мастер остается видимым после поворота назад к портрету, а не по умолчанию.
Чтобы воспроизвести ошибку: Запустить приложение в портрете на iPhone 6 Plus, поворот в альбомный, повернуть назад к портрету, нажмите на вторую или третью вкладку, поворот в альбомную
Ошибки: Контроллера вида детали полностью серый
Ожидаемый: вид контроллер детали должен выглядеть, как он обычно делает, если вы запустите приложение, выберите другую вкладку, а затем повернуть на альбомную
Дополнительной информации: как только это происходит, если г оттуда вернитесь к портрету, а затем вернитесь на другую вкладку, и при повороте к пейзажу будет отображаться серый контроллер детали. Приложение должно быть принудительно завершено и перезаписано, чтобы увидеть эти разделенные виды в ландшафте.
Теперь я заметил, что если вы откроете приложение и отобразится первая вкладка, если вы поворачиваете iPhone 6 Plus в альбомную, то он фактически инициализирует каждый контроллер главного и подробного представления в контроллере панели вкладок (5 дополнительных контроллеров представлений) - он останавливается на контрольных точках, установленных в viewDidLoad
, если вы подклассифицируете эти контроллеры. Я ожидал, что он только инициализирует контроллер подробных представлений для контроллера разделенного вида, который отображается на экране. Мне интересно, если это ожидаемое поведение? Я считаю, что это может быть связано с этой ошибкой.
Вопрос в том, является ли этот серый экран ошибкой в iOS, или есть проблема с этой настройкой, или есть что-то, что можно сделать, чтобы это не произошло?
Как это должно появиться:
Как он появляется, когда после вышеуказанных шагов:
Это действительно решает проблему! Кажется, это ошибка в iOS, нет? Я подал вам отчет об ошибке, и вы тоже? – Joey
Серый экран обозначает неинициализированный VC, поэтому нам нужно его инициализировать, и упомянутый метод казался правильным местом для этого. Однако то, что я испытывал, было немного другим, проверьте мой код, связанный с сообщением в блоге. Я фактически получал оба представления таблиц одновременно. Один в первичной, другой по вторичной. Не уверен, что это ошибка или нет. Дайте мне знать, если вы услышите от Apple. Также я был бы рад увидеть ваш код, если вы можете поделиться им и посмотреть, будет ли какой-либо другой подход лучше. –