使用 SWRevealViewController 时如何登录注销

Posted

技术标签:

【中文标题】使用 SWRevealViewController 时如何登录注销【英文标题】:How to login logout when using SWRevealViewController 【发布时间】:2017-08-04 11:44:15 【问题描述】:

你好朋友我正在使用 SWRevealViewController 作为菜单。我在 root 上使用了 loginViewController,登录后它来到了dashboardViewController。它工作正常,但问题在于注销,我无法注销。我首先将两个 navigationController 用于 loginViewController,第二个用于 dashBoardViewController。

用于登录

let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)


    let profileNC = storyboard.instantiateViewController(withIdentifier: "SWRevealViewController")


    self.navigationController?.pushViewController(profileNC, animated: true)

故事板的设计是

谁能帮帮我,提前谢谢

【问题讨论】:

你用 popToRootViewController 试过了吗? 是的,我试过了,但是由于我的第二个导航控制器,它仍然停留在那个控制器上。 您的注销按钮在哪里?在 SWReveal 菜单中还是在简单的视图控制器中? 它在导航栏上,它在运行时出现 更好的方法是,将dashboardViewController 作为入口点。并检查登录用户,如果用户未登录,则将 loginVC 作为根视图控制器。 【参考方案1】:

像这样将 loginVC 作为根视图控制器:

let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
let appDel:AppDelegate = UIApplication.shared.delegate as! AppDelegate
appDel.window?.rootViewController = loginVC

【讨论】:

我必须把这段代码放在 didFinishLaunchingWithOptions 或 loginController 中 didFinishLaunchingWithOptions 在“成功注销”点击事件中。 它显示错误“'AppDelegate' 类型的值没有成员 'storyboard'” 不要放入 AppDelegate。它用于注销按钮。如果成功注销,则此代码将 LoginVC 作为根视图控制器。【参考方案2】:

将此代码放入 AppDelegate 并使用

func goToLogin()
    
 let viewcontroller : UIViewController = self.storyboard?.instantiateInitialViewController()!;
self.window!.rootViewController = viewcontroller
self.window?.makeKeyAndVisible();
    

用法:从任何你想退出的人调用

let appDel:AppDelegate = UIApplication.shared.delegate as! AppDelegate
appDel.goToLogin()

【讨论】:

以上是关于使用 SWRevealViewController 时如何登录注销的主要内容,如果未能解决你的问题,请参考以下文章

使用相同 SWRevealViewController 的不同 ViewController 上的侧边栏

右侧使用 SWRevealViewController 的两个面板

使用 SWRevealViewController 时应用程序崩溃

带有 SWRevealViewController 的 ios 滑动状态栏

如何使用 swrevealviewcontroller 打开菜单启动应用程序?

UINavigationController:使用 SWRevealViewController 错误:不平衡调用开始/结束外观转换