Xcode Swift:由于滑出菜单,登录/注册页面未首先显示

Posted

技术标签:

【中文标题】Xcode Swift:由于滑出菜单,登录/注册页面未首先显示【英文标题】:Xcode Swift: Login/Signup Page not displaying first due to slideoutmenu 【发布时间】:2016-08-01 00:23:43 【问题描述】:

我正在使用 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!?

【问题讨论】:

只需实例化您的loginVC 并使其成为您的rootViewController,然后从那里实例化您的containerViewController 并使用loginVC 来呈现它,您可以制作一些NSUserDefault 来检查用户是否登录与否,然后直接呈现containerViewController 下一次 【参考方案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


【讨论】:

以上是关于Xcode Swift:由于滑出菜单,登录/注册页面未首先显示的主要内容,如果未能解决你的问题,请参考以下文章

12月11日,12月12日登陆注册页面的进度

四登录注册页功能实现《iVX低代码/无代码个人博客制作》

通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用

如何在目标 c 中使用 XIB 在登录视图后创建滑出菜单

前端Vue中实现超炫酷动态背景(全屏背景+自定义banner+登录/注册页)

jquery注册页面的判断及代码的优化