我有两个情节提要,一个包含应用程序实际的所有内容,另一个包含我的应用程序的“入门” /教程。
教程完成后,我想导航回到我原来的视图控制器。
这是我的代码,可以导航到其他故事板:
let defaults = UserDefaults.standard
if defaults.bool(forKey: "firstOpened") {
print("First VC launched")
}else{
var vc: UIViewController
let goTo = UIStoryboard(name: "Onboarding", bundle: nil).instantiateViewController(withIdentifier: "notificationStoryboard") as! FirstOnboardingViewController
self.present(goTo, animated: true, completion: nil)
}
有了它,它工作了,除了TabBarController没有显示出来,而且没有按照我想要的方式工作。
这是我的代码,可导航回到Main.Storyboard:
@objc func handleSecondPush() {
//registerForRemoteNotifications()
UserDefaults.standard.set(true, forKey: "firstOpened")
let goTo = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "pushToFeedVC")
self.present(goTo, animated: true, completion: nil)
//self.performSegue(withIdentifier: "goToLink", sender: nil)
}
我也在另一个Storyboard中尝试过此操作,但是使用此按钮不会更改视图:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController
print(controller)
self.window?.rootViewController = controller
self.window?.makeKeyAndVisible()
if let tabBarVc = self.window?.rootViewController as? UITabBarController {
tabBarVc.selectedIndex = 1
}
简而言之,问题:所以我的问题是,如何从不包含故事板的导航板中导航回到main.storyboard,它将包含具有选定索引1的TabBarController的TabBarController。导航控制器还是TabBarController?
答案 0 :(得分:2)
当您呈现onbaording时,应使用
返回到标签declare const state: MakeState<NodesState>;
state.attr1; // `number`
state["foo"] // `NodesState`
对于复杂的演示文稿,您可以执行此操作以便轻松地重新播放
self.dismiss(animated:true,completion:nil)
更好的是
let vc = storyboard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController
(UIApplication.shared.delegate as! AppDelegate).window!.rootViewController = vc
onbarding内部的流应该使用pushViewController
然后在最后一个vc中关闭
let goTo = UIStoryboard(name: "Onboarding", bundle: nil).instantiateViewController(withIdentifier: "notificationStoryboard") as! FirstOnboardingViewController
let nav = UINavigationController(rootViewController:goTo)
nav.isNavigationBarHidden = true
self.present(nav, animated: true, completion: nil)