Xcode Swift:由于slideoutmenu,登录/注册页面不会首先显示

时间:2016-08-01 00:23:44

标签: ios swift slidingmenu

我正在使用xcode / swift创建应用程序,同时实现滑动侧边栏菜单以及登录/注册过程。只有在完成登录或注册后,才能在下一个视图中访问滑动侧边栏菜单功能。

我按照滑动边栏教程的说明进行操作:Ray Wenderlich - 补充工具栏教程

问题是 - >仅当包含视图是打开应用程序时显示的第一个视图时,我的侧边栏菜单功能才有效。

有时这是可以的,因为一旦用户登录,侧边栏菜单视图就会显示第一个视图 - 但情况并非总是如此 - 注销用户必须先完成注册/登录才能访问/转换到此视图。

我确实将应用程序的初始视图设置为指向故事板中的LoginViewController,因此我不知道为什么这不会先加载!?

我的猜测是这与在我的AppDelegate.swift文件中设置rootviewcontroller有关。

AppDelegate.swift

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
    window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let containerViewController = ContainerViewController()

    window!.rootViewController = containerViewController
    window!.makeKeyAndVisible()

    return true

}

如何强制在应用程序启动时首先显示loginViewController!?

1 个答案:

答案 0 :(得分:1)

首先,您需要将rootViewController设置为loginVC,以便在appDelegate文件中替换上面的方法

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
window = UIWindow(frame: UIScreen.mainScreen().bounds)

// replace names accordingly
let loginViewController = LoginViewController()

window!.rootViewController = loginViewController
window!.makeKeyAndVisible()

return true

}

现在你应该在userDefaults中保存用户的状态。例如,如果用户未登录

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn)

当用户登录应用程序时,您可以像这样更新userDefault

NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")

所以你的最终功能看起来应该是这个

func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
window = UIWindow(frame: UIScreen.mainScreen().bounds)


if NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn") == true{

    let containerViewController = ContainerViewController()

    window!.rootViewController = containerViewController
    window!.makeKeyAndVisible()

    }
else {
    let loginViewController = LoginViewController()

     window!.rootViewController = loginViewController
     window!.makeKeyAndVisible()
    }

    return true

}