UISplitViewController сначала показывает подробный вид

Я очень новичок в разработке iOS. В моем приложении у меня есть панель вкладок, и на одной из вкладок у меня есть UISplitViewController. Моя проблема в том, что когда я перехожу на вкладку, она сначала показывает подробный вид. Затем я должен нажать кнопку назад, чтобы получить основной вид. Я нашел еще одного человека, имеющего эту проблему в stackru, но решение было в Objective-c, и я использую раскадровку (не знаю, как присоединить к ней класс) и swift, так что это не помогло.

Он также не работает при использовании ipad в портретном режиме. Когда я переключаюсь в альбомную ориентацию, он работает нормально, но показывает только черный экран (без кнопки возврата) в портретном режиме. Любая помощь будет оценена. Благодарю.

Я не уверен, какая другая информация вам нужна или что вы хотите, чтобы я показал, поэтому дайте мне знать, если я что-то пропустил.

скорректированный appdelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    let tabBarController = self.window!.rootViewController as! UITabBarController
    let splitViewController = tabBarController.viewControllers![3] as! UISplitViewController

    ///////////////////Always visible property
    splitViewController.preferredDisplayMode = .AllVisible
    ///////////////////
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
    splitViewController.delegate = self
    return true
}

Обновление: в конечном итоге исправление после этого ответа Откройте UISplitViewController в Master View, а не в Detail

1 ответ

Я создал образец SplitViewController в проекте и установил свойство в приложении applelegate. Это работает для меня https://github.com/harsh62/stackru_TestMasterDetailApp

splitViewController.preferredDisplayMode = .AllVisible

Полная функция выглядит следующим образом:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    let splitViewController = self.window!.rootViewController as! UISplitViewController
    ///////////////////Always visible property
    splitViewController.preferredDisplayMode = .AllVisible
    ///////////////////
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
    splitViewController.delegate = self
    return true
}

Ссылки: UISplitViewController - установить всегда видимый главный контроллер, когда

Другие вопросы по тегам