#ios #ipad #uisplitviewcontroller #master-detail
#iOS #iPad #uisplitviewcontroller #мастер-детализация
Вопрос:
Я пытаюсь создать приложение для iPad с основным принципом детализации, поэтому я использую UISplitViewController
. Проблема в том, что я хочу другого поведения для приложения, потому что иногда детальный просмотр идет глубже. Итак, я хочу, чтобы детальный вид стал основным видом и загрузил новый вид как деталь. Чтобы привести вам пример, допустим, у меня есть ViewController1
, ViewController2
и ViewController3
. При нажатии на ссылку из (master) ViewController1
ViewController2
рядом с ней должна отображаться (detail). Теперь, если пользователь нажимает на ссылку ViewController2
, ViewController1
она должна исчезнуть ViewController2
, должна занять свое место и ViewController3
должна быть показана. Каков наилучший способ сделать что-то подобное, потому что я не могу этого сделать с UISplitViewController
помощью.
Комментарии:
1. Вы читали документацию? developer.apple.com/library/ios/documentation/uikit/reference /… или developer.apple.com/library/ios/search /? q = uiviewcontroller
2. вы не прочитали весь вопрос, не так ли? Он не работает с splitViewController так, как я этого хочу
3. Конечно, я прочитал «весь вопрос», прежде чем комментировать! Вам нужно прочитать документацию, и там все предусмотрено. Также проверьте это: developer.apple.com/library/ios/documentation/UIKit/Reference /…
4. Я говорю об iPad, чтобы у меня было 2 контроллера рядом друг с другом на одном экране. Лучший способ, конечно, использовать splitController, но я хочу совершенно другое поведение для навигации, и я пытаюсь выяснить, какое лучшее решение
Ответ №1:
По умолчанию шаблон разделенного представления предоставляет вам навигационный контроллер как для основной, так и для подробной сторон. Я бы посмотрел на создание a ViewController2B
, которое использует ту же модель данных ViewController2
, что и, а затем синхронизирует push / pop, чтобы 1 и 2 переключались с 2B и 3 как одна операция.
Комментарии:
1. Это решение, но, допустим, я хочу реализовать решение, которое я предлагаю, без необходимости синхронизации и использования одного и того же контроллера дважды. Каков наилучший способ сделать что-то подобное? Может быть, с помощью пользовательского контейнера?
2. Я не уверен, что это было бы проще, но это, безусловно, сработало бы. Если у вас есть пользовательский контроллер контейнера, вы можете заставить дочерние представления контроллера вести себя так, как вы хотите.
Ответ №2:
ОК. Теперь я понял проблему. Я не совсем уверен, полезно ли это вообще, но иногда эти пользовательские элементы управления весьма полезны. Вы их проверили? Они могут помочь вам реализовать код в вашем собственном проекте или, может быть, просто использовать их?
-
https://github.com/sergik-ru/SMTabbedSplitViewController (Немного отличается)
Надеюсь, это поможет.
Комментарии:
1. Да, но они также используют splitController, и настраивается только внешний вид, а не навигация. Полагаю, мне придется использовать контроллер контейнера. Хотя спасибо