当我运行我的应用程序时,如果用户已经注册(从本地数据库检查),我想加载一个不同的ViewController。它工作,但我看到前一个屏幕瞬间,并希望摆脱它。如果我将以下代码放在viewWillAppear或viewDidLoad中,则它不起作用。当我把它放在ViewDidAppear中时,它可以工作并加载下一个屏幕。如何在不看屏幕的情况下如何做到这一点?
这有效,但我看到前一个屏幕瞬间。
override func viewDidAppear(_ animated: Bool) {
if(userInfo.Confirmed == "Yes") {
performSegue(withIdentifier: "skipRegistration", sender: self)
}
}
这不起作用:
覆盖func viewWillAppear(_ animated:Bool){
if(userInfo.Confirmed == "Yes") {
performSegue(withIdentifier: "skipRegistration", sender: self)
}
}
这不起作用:
override func viewDidAppear(_ animated: Bool) {
if(userInfo.Confirmed == "Yes") {
performSegue(withIdentifier: "skipRegistration", sender:
自)
}
}
谢谢!
您可以在appLleunch方法的appdelegate中执行此代码,并在没有动画的情况下推送您的viewcontroller两次
注意正确维护viewController堆栈。
不了解如何推送viewController。
我将代码插入到appDelegate中,我试图调用正确的Controller来接管,但似乎无法找到它。我有一个标签栏控制器,我有一个导航控制器。它是这样的。
注册用户应跳至该应用的第一个屏幕。
未注册的用户获取这些页面:
注册屏幕
registration1屏幕
registration2 Screen
协议:屏幕 - >点击接受协议按钮然后转到:
Agreement segue -> (beginApp segue) to tab bar controller then goes to
Navigation Controller -> myFirst Screen of the App!
一切正常,但我需要跳到应用程序的第一个屏幕。
我已尝试使用此示例代码,但无法弄明白。
let navVC: UINavigationController = rootView.viewControllers![4] as! UINavigationController
let vc = navVC.topViewController as! MoreTableViewController
我希望这是有道理的!
答案 0 :(得分:1)
您可以在appLleunch方法的appdelegate中执行此代码,并在没有动画的情况下推送您的viewcontroller两次
注意正确维护viewController堆栈。
答案 1 :(得分:0)
这很有用!
// This works to load my tab bar controller and it works!
let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController : UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "startHere") as! UITabBarController
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()