Я делаю демонстрацию технологии iPad и столкнулся с серьезной технической проблемой.
У меня есть концепция приложения, которая использует UISplitViewController, но НЕ как основной контроллер для всего приложения.
Поток приложения можно описать примерно так:
Главный экран (UIViewController)
Список-> Деталь "Каталог" (UISplitViewController)
Экран сверхвысокой детализации (UIViewController, но он также может быть дочерним для SplitView).
Проблема в потоке между Домом и Каталогом. Как только представление UISplitViewController добавляется в окно UIWindow, оно начинает выбрасывать его шипучие припадки.
Проблема может быть обобщена следующим образом:
Когда UISplitView генерирует всплывающее представление, оно, кажется, затем привязывается к своему родительскому представлению. После удаления UISplitView из подпредставлений UIWindow вы получите исключение CoreGraphics, и представление не удастся удалить.
При добавлении других представлений (предположительно, в данном случае на домашний экран, на который вы возвращаетесь) они не автоматически поворачиваются, вместо этого UISplitView, который не удалось удалить из-за исключения CG, продолжает отвечать на запросы. вместо этого вращение, вызывающее ужасные ошибки рендеринга, с которыми нельзя просто "справиться". На этом этапе добавление любых представлений, даже повторное добавление SplitView, вызывает каскад ошибок рендеринга.
Затем я попытался просто оставить SplitView всегда представленным как «нижний» вид и продолжать добавлять и удалять домашний экран сверху, но это не удается, поскольку SplitView доминирует над вызовами изменения ориентации, а домашний экран не будет повернуть, даже если вы вызываете [homeScreen intoFirstResponder]
Вы не можете поместить SplitView в иерархию, такую как UINavigationController, вы получите прямую ошибку времени выполнения, так что эта опция не будет рассмотрена. Модалы просто выглядят плохо и в любом случае обескураживают.
В настоящий момент я предполагаю, что единственный правильный способ решения этой проблемы - это так или иначе «разоружить» UISplitViewController, чтобы его можно было удалить из родительского представления, не вызывая необработанное исключение, но я понятия не имею, как.
Если вы хотите увидеть приложение, которое делает именно то, что мне нужно, проверьте GILT Groupe в магазине приложений iPad. Они сделали это, но, похоже, запрограммировали весь набор пользовательских переходов.
Помощь будет принята с благодарностью.