Apple не поддерживает UISplitViewController.DisplayMode.PrimaryOnly как SplitViewController.preferredDisplayMode.IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Apple не поддерживает UISplitViewController.DisplayMode.PrimaryOnly как SplitViewController.preferredDisplayMode.

Сообщение Anonymous »


Как включить masterViewController как UISplitViewController.preferredDisplayMode (UISplitViewController.DisplayMode.PrimaryOnly) на устройствах iPhone более высокого класса (например, iPhone 14 Plus) в ландшафтном режиме?

Я использую SplitView со стилем .doubleColumn. Моя цель состоит в том, чтобы SplitView представлял MasterView в качестве начального экрана, а подробное представление в качестве последующего экрана в альбомном режиме, напоминающем портретный режим iPhone по умолчанию, особенно на устройствах iPhone более высокого класса (таких как iPhone 14 Plus и iPhone Pro Max). ). При запуске на iPad он должен отображаться как «рядом» («oneBesideSecondary»).

Как мы можем отобразить MasterViewController с помощью SplitViewController.preferredDisplayMode, в частности установив для него значение UISplitViewController.DisplayMode.PrimaryOnly при повороте в альбомный режим на устройствах iPhone более высокого класса? Однако важно отметить, что Apple не поддерживает UISplitViewController.DisplayMode.PrimaryOnly.

Желаемый интерфейс: Портрет на iPhone:

Основной виртуальный виртуальный язык:

https://i.stack.imgur.com/cqWbH.png

вторичный виртуальный виртуальный компьютер:

https://i.stack.imgur.com/8x7Ps.jpg

Альбомное расположение iPhone:

основной виртуальный виртуальный язык:

https://i.stack.imgur.com/3dCwP.png

вторичныйVC:

https://i.stack.imgur.com/bBe4O.png

iPad:

портрет:

https://i.stack.imgur.com/PfXTW.jpg

Пейзаж:

https://i.stack.imgur.com/teqV0.jpg

Вот мой код:

``` класс ViewController: UIViewController, UISplitViewControllerDelegate {

var SplitVC = UISplitViewController(стиль: .doubleColumn) вар делегатПротокол: TableSelectionDelegate? вар ListView: ListViewController! переопределить функцию viewDidLoad() { супер.viewDidLoad() SplitVC.delegate = сам SplitVC.presentsWithGesture = правда SplitVC.preferredSplitBehavior = .tile ListView = ListViewController() } переопределить func viewWillAppear(_animated: Bool) { var PrimaryVC: ListViewController = UIStoryboard (имя: «Main», Bundle: nil).instantiateViewController (withIdentifier: «ListViewController») как! Листвиевконтроллер var SecondVC: SecondViewController = UIStoryboard (имя: «Main», пакет: ноль).instantiateViewController (withIdentifier: «SecondViewController») как! Секондвиевконтроллер PrimaryVC.delegate = сам SecondVC.view.backgroundColor = UIColor.placeholderText если UIDevice.current.userInterfaceIdiom == .pad { SplitVC.setViewController(primaryVC, для: .primary) SplitVC.setViewController(второйVC, для: .вторичный) SplitVC.preferredDisplayMode = UISplitViewController.DisplayMode.oneBesideSecondary } еще { SplitVC.setViewController(второйVC, для: .primary) SplitVC.setViewController(primaryVC, для: .вторичный) SplitVC.preferredDisplayMode = UISplitViewController.DisplayMode. SecondaryOnly // скрываем кнопку возврата в основной список пусть контроллеры = SplitVC.viewControllers PrimaryVC = (контроллеры [контроллеры.count-1] как! UINavigationController).topViewController как! Листвиевконтроллер PrimaryVC.navigationItem.leftBarButtonItem = SplitVC.displayModeButtonItem PrimaryVC.navigationItem.leftItemsSupplementBackButton = false } addChild (splitVC) SplitVC.view.frame = CGRect (x: 0, y: 0, ширина: UIScreen.main.bounds.size.width, высота: UIScreen.main.bounds.size.height) self.view.addSubview(splitVC.view) SplitVC.didMove(toParent: self) } func SplitViewController (_ svc: UISplitViewController, willChangeTo displayMode: UISplitViewController.DisplayMode) { если UIDevice.current.userInterfaceIdiom == .phone { svc.presentsWithGesture = displayMode != . SecondaryOnly } }

расширение ViewController: TableSelectionDelegate { func selectedRow(row: Int, viewController: UIViewController) {

SplitVC.showDetailViewController(viewController, отправитель: self) }
Я попробовал использовать приведенный выше код, заменив PrimaryVC на .вторичный и SecondaryVC на .primary в SplitView для типа устройства iPhone. В результате я добился желаемого пользовательского интерфейса. SplitVC.setViewController(второйVC, для: .primary) SplitVC.setViewController(primaryVC, для: .вторичный) SplitVC.preferredDisplayMode = UISplitViewController.DisplayMode. SecondaryOnly. Однако я не уверен, был ли этот подход правильным или неправильным. Каким будет лучший подход для достижения желаемого пользовательского интерфейса?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»