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 Referencemain.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