【问题标题】:iOS Switch between 2 Navigation controlleriOS在2个导航控制器之间切换
【发布时间】:2015-11-11 22:49:15
【问题描述】:

在我的应用程序中,如果用户没有登录,它会显示一个嵌入在导航控制器中的登录控制器。 当用户登录时,应用应该切换到另一个导航控制器来显示应用。

当用户登录时,如何从一个导航控制器切换到另一个导航控制器。 ?

谢谢

我正在检查用户是否登录应用委托:

 // Check if user is log
    let currentUser = PFUser.currentUser()
    if currentUser != nil {
        // Do stuff with the user
    } else {
        // Show the signup or login screen
        let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("LogInController") as! UINavigationController
        self.window?.rootViewController = nav
    }

解决方案:看起来可行
当用户按下登录按钮时:

let mainStoryboardIpad : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let nav = mainStoryboardIpad.instantiateViewControllerWithIdentifier("MainNavController") as! UINavigationController
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.window?.rootViewController = nav

【问题讨论】:

  • 你在哪里决定用户是否登录?应用委托?查看加载了吗?
  • 在应用委托中是。代码已编辑。
  • 你也可以换成其他的导航控制器,使用storyboard ID!!!
  • 当用户通过按下日志按钮登录时,我无法制作 self.window.rootViewController 因为我现在不在应用程序委托中,而是在 logInViewController 中
  • 您可以在视图控制器的任何位置使用应用程序委托。只需将应用委托的引用传递给您的视图控制器!!!!

标签: ios swift uinavigationcontroller


【解决方案1】:

解决方案 1

一种解决方案是仅使用一个导航控制器。当用户登录时,您将弹出所有用于登录的视图控制器并将主视图控制器推送到堆栈上。

解决方案 2

或者,您可以在登录内容之上以模态方式呈现一个新的导航控制器,主控制器作为其根。它会简单地呈现在它之上。

解决方案 3

您也可以考虑先创建带有主视图控制器的导航控制器,然后在其上显示登录导航控制器。然后,当用户登录时,您只需关闭登录导航控制器,显示主视图控制器。

【讨论】:

  • 在弹出登录 VC 之后推送主 VC 之前,解决方案 1 会不会出现故障?我们有一个类似的问题,但是第二个导航控制器(即流)的附加扭曲需要与第一个导航控制器不同的方向。
【解决方案2】:

设置您的导航控制器故事板 ID

    let navigationController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondNavigationController")
    self.presentViewController(navigationController, animated: true, completion: nil)

希望这会有所帮助。 :)

【讨论】:

  • 那你怎么解散它?
  • 你的意思是你什么时候想退出?顺便说一句,你也可以使用 nsuserdefaults 来检查登录
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
相关资源
最近更新 更多