UISplitViewController и комплекс просматривают иерархию

Я делаю техническую демонстрацию iPad, и я сталкиваюсь с серьезной технической проблемой.

У меня есть понятие приложения, которое усиливает UISplitViewController, но НЕ как первичный контроллер для целого приложения.

Поток приложения мог быть описан примерно как это:

Главный экран (UIViewController) Список-> Деталь "Каталог" (UISplitViewController) Супер Подробный экран (UIViewController, но мог мыслимый также быть ребенком SplitView).

Проблема находится в потоке между Домом и Каталогом. После того как представление UISplitViewController добавляется к UIWindow, оно начинает бросать соответствия hissy.

Проблема может быть получена в итоге в этом:

Когда UISplitView генерирует представление легкой сдобы, это, кажется, затем фиксируют к его родительскому представлению. После удаления UISplitView от подпредставлений UIWindow Вы получите исключение CoreGraphics, и представление не будет удалено.

При добавлении других представлений (по-видимому, в этом случае, главный экран, к которому Вы возвращаетесь), они не самовращаются, вместо этого, UISplitView, которому не удалось быть удаленным из-за исключения CG, продолжает отвечать на вращение вместо этого, вызывая ужасные ошибки рендеринга, с которыми нельзя просто "иметь дело с". На данном этапе добавление любых представлений, даже передобавление SplitView, вызывают каскад ошибок рендеринга.

Я затем пытался просто уехать, SplitView когда-либо представляют как "нижнее" представление, и сохраняющий добавление и удаление главного экрана от сверху его, но это перестало работать, поскольку SplitView доминирует над вызовами изменения Ориентации, и главный экран не будет вращаться, даже если Вы будете звонить [homeScreen becomeFirstResponder]

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

Мое предположение в данный момент - то, что единственный надлежащий способ иметь дело с этой проблемой, так так или иначе "разоружают" UISplitViewController так, чтобы это могло быть удалено из своего родительского представления, не бросая необработанное исключение, но я понятия не имею как.

Если Вы хотите видеть приложение, которое делает точно, что я должен сделать, GILT выезда Groupe в хранилище приложения для iPad. Они осуществили его, но они, кажется, запрограммировали весь пользовательский набор перехода представления.

Справка значительно ценилась бы.

9
задан Gone Coding 1 July 2011 в 14:56
поделиться

4 ответа

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

Это сомнительный способ делать что-то в моей книге, но Apple не оставляет вам выбора, если вы хотите использовать SplitView только «иногда» в приложении.

4
ответ дан 4 December 2019 в 13:00
поделиться

Apple заявляет :

Представление контроллера разделения представления всегда должно устанавливаться как корневой {{1 }} вид окна вашего приложения. Вы никогда не должны представлять разделенное представление внутри интерфейса навигации или панели вкладок .

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

Вы никогда не должны представлять разделенное представление внутри интерфейса навигации или панели вкладок

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

У меня такое чувство, что то, что вы переживаете, является побочным продуктом попытки сделать это. Я действительно удивлен, что приложение GILT Groupe не было отклонено. В последнее время Apple имеет тенденцию довольно строго соблюдать эти правила HIG. Они (как вы уже выяснили) вызывают довольно неприятную ошибку времени выполнения, когда вы пытаетесь добавить их в NavigationController.

8
ответ дан 4 December 2019 в 13:00
поделиться

Мне удалось создать второй UIWindow. Я связываю с ним UISplitViewController и выключаю его в главном окне, когда хочу показать разделенное изображение. Кажется, они работают так, как я хотел, за исключением небольшой задержки ротации и сообщения журнала о "wait_fences".

4
ответ дан 4 December 2019 в 13:00
поделиться

Если вы не разрабатываете устройства для взломанных устройств, то изменение правил / желаний яблок - не лучшая идея. Как и состояние Jann и Jasconius, приведенное выше, это означает сохранение корня представления контроллера splitView, без чрезмерного использования модальных окон (расплывчато) и без использования нескольких окон.

Кроме того, приложение Gilt доступно только в США.

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

@Jasconius, Какое максимальное количество модальных окон вы показываете в любое время?

0
ответ дан 4 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: