Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从UINavigationController堆栈分离到UITabBarController_Ios_Objective C_Iphone_Xcode_Swift - Fatal编程技术网

Ios 从UINavigationController堆栈分离到UITabBarController

Ios 从UINavigationController堆栈分离到UITabBarController,ios,objective-c,iphone,xcode,swift,Ios,Objective C,Iphone,Xcode,Swift,我已登录。情节提要: @IBAction func btnLoginTouchUpInside(sender: UIButton) { let params = AuthLoginParams(Username: txtFieldUsername.text!, Password: txtFieldPassword.text!) AuthLoginRequest.FetchUser(params) { (userModel) -> Void in

我已登录。情节提要:

@IBAction func btnLoginTouchUpInside(sender: UIButton) {
        let params = AuthLoginParams(Username: txtFieldUsername.text!, Password: txtFieldPassword.text!)

        AuthLoginRequest.FetchUser(params) { (userModel) -> Void in
            if(userModel.IsAuthorized){
                self.performSegueWithIdentifier("mainStoryboardSegue", sender: nil)
            }else{

            }
        }
    }

登录视图控制器
有一段序列图像板引用和序列图像板
main.Storyboard

@IBAction func btnLoginTouchUpInside(sender: UIButton) {
        let params = AuthLoginParams(Username: txtFieldUsername.text!, Password: txtFieldPassword.text!)

        AuthLoginRequest.FetchUser(params) { (userModel) -> Void in
            if(userModel.IsAuthorized){
                self.performSegueWithIdentifier("mainStoryboardSegue", sender: nil)
            }else{

            }
        }
    }

我的LoginViewController类代码有一个TouchUpInside操作处理程序,该处理程序以编程方式将segue调用到
main.storyboard

@IBAction func btnLoginTouchUpInside(sender: UIButton) {
        let params = AuthLoginParams(Username: txtFieldUsername.text!, Password: txtFieldPassword.text!)

        AuthLoginRequest.FetchUser(params) { (userModel) -> Void in
            if(userModel.IsAuthorized){
                self.performSegueWithIdentifier("mainStoryboardSegue", sender: nil)
            }else{

            }
        }
    }
现在让我们看看
main.storyboard

因此,从
Login.storyboard
->成功登录segue->
Main.storyboard
我正在尝试从
UINavigationController
堆栈中分离“出”,并使用
UITabBarController
启动新的/新的。如果我使用
main.storyboard
启动应用程序并跳过
登录.storyboard
,下面是一个屏幕截图:

但是,如果我用
Login.storyboard
启动我的应用程序,并尝试用
segue to Stoyboard Reference
main.storyboard
self.performsguewithidentifier(“mainStoryboardSegue”,发件人:nil)

我仍处于登录过程UINavBarController堆栈中,我不希望:


多亏@Paulw11在我的问题评论中的提示,他说我不能用简单的segue做我想做的事情,我必须通过编程更改rootViewController,这是我提出的代码,包括一个转换错误,所有这些似乎都工作得很好:

 let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
 let viewController = mainStoryboard.instantiateViewControllerWithIdentifier("dashboardTabBarController") as! DashboardTabBarController

 UIView.transitionWithView(self.view.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {
                    UIApplication.sharedApplication().keyWindow?.rootViewController = viewController;
                    }, completion: nil)

你不能用一个简单的segue做你想做的事。您需要实例化选项卡栏控制器,并用它替换窗口的根视图控制器。这将卸下导航控制器。或者,您可以将导航barGot隐藏起来,谢谢@Paulw11