Я разрабатываю интерфейс для приложения iOS, в котором есть как иерархические режимы навигации, так и произвольные режимы смены вида. Компоновка любого данного вида в одном режиме отличается от компоновки соответствующего вида в другом режиме.
Я хочу, чтобы пользователь мог переключаться между этими режимами. Скажем, изолированное подпредставление имеет соответствующее подробное представление, которое находится на 2 уровня ниже в иерархии UINavigationController. Пользователь должен иметь возможность напрямую переключаться в это подробное представление навигации. Оттуда он должен иметь возможность либо перемещаться вверх и вниз по иерархии UINavigationController, либо переключаться обратно на изолированное подпредставление, из которого он пришел.
UINavigationController имеет метод popToViewController:animated:
, который позволит вам пропускать уровни при переходе назад вверх по иерархии, но у него нет соответствующей pushToViewController:animated:
, которая позволила бы вам перейти непосредственно на более низкий уровень в иерархия. Это имеет смысл - навигационный контроллер должен поместить промежуточный вид в стек, прежде чем он отобразит целевой вид. Но обычные методы push отображают промежуточное представление / с, которое, как я предполагаю, вызовет визуальную вспышку, а также нанесет удар по производительности.
Если я имитирую pushToViewController
, дважды вызывая pushViewController
, с animated:NO
для промежуточного вида и с промежуточным видом, установленным временно как прозрачный, получу ли я разумную производительность? Или, когда запрашивается режим навигации, я должен поместить стек контроллера позади изолированных представлений, выполнить несколько вызовов на pushViewController,
и затем переместить контроллер навигации вперед? Или я должен вообще отказаться от использования UINavigationController и выполнить всю навигацию в стиле табличного представления вручную с помощью add/remove/insert/exchangeSubview
?
в UIView.