2016-08-11 4 views
0

Ich bin sehr neu in der iOS-Entwicklung. In meiner App habe ich eine Tab-Leiste und in einer der Registerkarten habe ich einen UISplitViewController. Mein Problem ist, dass wenn ich auf die Registerkarte gehe, es zuerst die Detailansicht anzeigt. Dann muss ich auf die Zurück-Schaltfläche klicken, um die Master-Ansicht zu erhalten. Ich habe eine andere Person gefunden, die dieses Problem bei stackoverflow hat, aber die Lösung war in Objective-c und ich benutze das Storyboard (nicht sicher, wie ich eine Klasse anhängen soll) und swift, so dass das nicht geholfen hat.UISplitViewController zeigt Detailansicht zuerst

Es funktioniert auch nicht, wenn ein iPad im Hochformat verwendet wird. Wenn ich in die Landschaft umschalte, funktioniert das gut, aber im Hochformat wird nur ein schwarzer Bildschirm angezeigt (keine Zurück-Taste). Jede Hilfe wäre willkommen. Vielen Dank.

Ich bin mir nicht sicher, welche anderen Informationen du brauchst oder was du mir zeigen willst, also lass es mich wissen, wenn ich etwas vergessen habe.

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 
} 

-Update angepasst: am Ende Befestigungs nach dieser Antwort Open UISplitViewController to Master View rather than Detail

Antwort

0

ich eine Probe SplitViewController im Projekt angelegt haben und die Eigenschaft in der AppDelegate gesetzt. Dies funktioniert für mich https://github.com/harsh62/stackoverflow_TestMasterDetailApp

splitViewController.preferredDisplayMode = .AllVisible

Die volle Funktion ist wie folgt:

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 
} 

Referenzen: UISplitViewController - set always visible master controller when

+0

danke. Ich werde es versuchen, wenn ich nach Hause komme und es dich wissen lasse. –

+0

Ich habe versucht, den Code und bekam diesen Fehler Konnte Wert des Typs 'UITabBarController' (0x1024988b0) zu 'UISplitViewController' (0x1024a5240) nicht konvertieren. (lldb) –

+0

Sie setzen diese Eigenschaft, deshalb erhalten Sie diesen Fehler. Versuchen Sie, 'preferredDisplayMode' für das Split-Controller-Objekt festzulegen. – Harsh

Verwandte Themen