登录Master-Detail App的最佳实践 - Swift

时间:2016-11-11 03:07:24

标签: ios

我想知道为Master-Detail应用程序实现登录屏幕的最佳做法是什么,该应用程序将SplitView Controller作为根控制器。如果用户没有登录,我正在使用appDelegate显示登录屏幕。但是,当我想关闭loginVC时,应用程序进入空白详细信息页面而不是MasterController。对于Master-Detail应用程序,模态登录屏幕会更好吗?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let loginVC = storyboard.instantiateViewControllerWithIdentifier("LoginVC") as! loginViewController
self.window?.rootViewController = loginVC
return true

let splitViewController = self.window!.rootViewController as! UISplitViewController
let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
splitViewController.delegate = self
return true

然后在我的loginVC中:

@IBAction func goHome(sender: AnyObject) {
 let storyboard = UIStoryboard(name: "Main", bundle: nil)
 let splitViewController = storyboard.instantiateViewControllerWithIdentifier("SplitViewControllerID") as! UISplitViewController
 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
  appDelegate.window?.rootViewController = splitViewController    
    }

1 个答案:

答案 0 :(得分:0)

通过更改goHome函数的代码,它对我有用。以下是代码:

@IBAction func goHome(sender: AnyObject) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let splitViewController = storyboard.instantiateViewController(withIdentifier: "SplitViewControllerID") as! UISplitViewController
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window?.rootViewController = splitViewController
    splitViewController.preferredDisplayMode = .allVisible
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
}