当前位置: 首页 > 知识库问答 >
问题:

我如何去另一个没有segues的视图控制器[SWIFT 5]

阎知
2023-03-14

我想执行另一个视图控制器从注册,但当我这样做,边栏消失。有人帮忙吗?

@IBAction func signUpPressed(_ sender: UIButton) {
        
        if let email = emailTextField.text, let parola = parolaTextField.text{
      
            Auth.auth().createUser(withEmail: email, password: parola) { (authResult, eroare) in
                
                if let e = eroare {
                    print(e.localizedDescription)
                }
                else
                {
                    self.transitionToHome()
                }
            }
        }
        
    }
    func transitionToHome() {
        
        let homeViewController = storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? HomeViewController
        
        view.window?.rootViewController = homeViewController
        view.window?.makeKeyAndVisible()
        
    }

[ViewControllers][1]:https://i.stack.imgur.com/c6tsh.png

共有2个答案

狄楷
2023-03-14

transitionToHome()是自己创建一个视图控制器的实例,这就是左侧导航导航消失的原因。

如果您希望能够保持导航,那么您必须创建一个UINavigationController,其中嵌入了HomeViewController的根视图控制器

let homeNavigationController = UINavigationController(rootViewController: homeViewController)
view.window?.rootViewController = homeNavigationController
view.window?.makeKeyAndVisible()
松钟展
2023-03-14

之所以会发生这种情况,是因为边栏按钮是导航控制器的一部分,并且当您尝试实例化homeViewController时,您只启动了controller,而该controller实际上没有NavigationVC。RootViewController应该是导航控制器。您需要从storyboard中的HomeViewController中删除标识符(constants.storyboard.HomeViewController),并将其设置为其嵌入的导航控制器。

func transitionToHome() {
    
    let homeNavController = storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? UINavigationController
    
    view.window?.rootViewController = homeNavController
    view.window?.makeKeyAndVisible()
    
}
 类似资料:
  • 我找到了一些关于这个问题的帖子,但是没有一个能解决我的问题。 说像我已经... ViewControlllerA ViewControlllerB 我试图将ViewControlllerB添加为ViewControlllerA中的子视图,但是,它抛出了一个错误,如""。 下面是代码。。。 视图控制器 ViewControllerB只是一个带有标签的简单屏幕。 视图控制器B 编辑

  • 问题内容: 我有一个storyviewcontroller,它的视图上有对象。我需要更改UILabel(在storyviewcontroller中)上的文本,并将视图加载到数组上。我已将IBOutlet连接到storyviewcontroller中的标签。 我已经创建了storyviewcontroller类的对象,并且能够访问其变量。但是,在创建storyviewcontroller的对象之后,

  • 问题内容: 我没有找到有关此问题的文章,但没有一个解决我的问题。 就像我说的那样。 ViewControllerA ViewControllerB 我试图将添加为的子视图,但是它 抛出类似“ ” 的错误。 下面是代码… ViewControllerA ViewControllerB只是一个带有标签的简单屏幕。 ViewControllerB EDIT 根据用户答案的​​建议解决方案,ViewCon

  • 问题内容: 我想从另一个控制器的函数中加载一个控制器,因为我集成到项目中的库我不想将其加载到控制器中,因为我想保持它的清洁和相关性。 我有默认的控制器,所以我可以加载,这样我怎么能从main函数访问控制器,所以我不必将控制器放在url中。 如果我可以从主控制器功能中加载控制器功能,我仍然愿意使用HMVC。 问题答案: 您无法从CI中的控制器加载控制器-除非您使用HMVC或其他工具。 您应该考虑一下

  • 问题内容: 我是Angular的新手,正在尝试弄清楚该怎么做… 使用AngularJS,如何注入要在另一个控制器中使用的控制器? 我有以下片段: 执行此操作时,出现错误: 我是否应该尝试在另一个控制器内部使用一个控制器,还是应该将此服务用作服务? 问题答案: 如果您打算掌握已经实例化的另一个组件的控制器,并且如果您遵循的是基于组件/指令的方法,则始终可以遵循某个层次结构的另一个组件中的控制器(一个

  • 问题内容: 我有一个这样的故事板 -> NavigationController-> LoginView-> TabBarController-> VC1-> VC2 我没有设法从VC1到VC2进行“移动”并保持选项卡栏。 我尝试了以下方法: Segue(显示类型) 以编程方式实例化: 但两者都会使标签栏消失。 我也尝试过 但这并没有改变任何东西。 您还有其他想法吗? PS:我在上面更新了方案…