Ios 应用程序的第二次启动仅显示黑色视图
在应用程序第一次启动时,我希望用户从ViewController1(VC1)开始,在完成安装过程后,在ViewController3(VC3)中单击一个按钮,选项卡栏控制器的第一项应该是新的初始视图控制器 第一次启动有效,但当关闭应用程序并重新打开应用程序时,所有内容都变黑 当我将VC3设置为新的初始viewController时,一切正常 我的领馆Ios 应用程序的第二次启动仅显示黑色视图,ios,swift,viewcontroller,xcode11,Ios,Swift,Viewcontroller,Xcode11,在应用程序第一次启动时,我希望用户从ViewController1(VC1)开始,在完成安装过程后,在ViewController3(VC3)中单击一个按钮,选项卡栏控制器的第一项应该是新的初始视图控制器 第一次启动有效,但当关闭应用程序并重新打开应用程序时,所有内容都变黑 当我将VC3设置为新的初始viewController时,一切正常 我的领馆 var window: UIWindow? func scene(_ scene: UIScene, willConnectTo se
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: windowScene)
//self.window = UIWindow(frame: UIScreen.main.bounds)
// Is it the apps first start?
let firstView = UserDefaults.standard.string(forKey: "firstStart")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
// Create the root view controller as needed
guard let vc = storyboard.instantiateViewController(identifier: firstView ?? "Welcome") as? ViewController else {
print("ViewController not found")
return
}
let nc = UINavigationController(rootViewController: vc)
// Create the window.
let win = UIWindow(windowScene: windowScene)
win.rootViewController = nc
win.makeKeyAndVisible()
window = win
}
我的按钮:
@IBAction func buttonActivate(_ sender: Any) {
// Change start View to "Home"
UserDefaults.standard.set("Home", forKey: "firstStart")
}
我尝试过在Info.plist中更改键并通读UIApplicationSceneManifest,但没有成功。尝试使用一个附加导航控制器作为选项卡栏控制器项2显示,但结果与黑屏相同
您不应该尝试更改窗口,而应该更改.rootViewController VC1是storyboard中的入口点,这意味着您的应用程序每次启动时都会使用初始视图控制器,在app delegate中的“didFinishLaunchingWithOptions”过程中,您可以询问用户是否已通过Onboard升级,在这种情况下,请按如下方式切换rootViewController:
func showMainStoryboard() {
let homeViewController = UIStoryboard(name: "StoryboardName", bundle: Bundle.main).instantiateInitialViewController()
window?.rootViewController = homeViewController
}
为了使下面的示例适用于您,您必须创建一个单独的故事板:1个用于Onboard,1个用于main
流程#1:
用户第一次安装应用程序时,在他单击VC3上的按钮后,他会在该事件上切换rootViewController
流程#2:
在用户单击按钮并重新输入应用程序后,他将不会随入职而升级,但会被路由到“主”VC,这在您的情况下是一个开始。您不应该尝试更改窗口,而应该更改.rootViewController VC1是storyboard中的入口点,这意味着您的应用程序每次启动时都会使用初始视图控制器,在app delegate中的“didFinishLaunchingWithOptions”过程中,您可以询问用户是否已通过Onboard升级,在这种情况下,请按如下方式切换rootViewController:
func showMainStoryboard() {
let homeViewController = UIStoryboard(name: "StoryboardName", bundle: Bundle.main).instantiateInitialViewController()
window?.rootViewController = homeViewController
}
为了使下面的示例适用于您,您必须创建一个单独的故事板:1个用于Onboard,1个用于main
流程#1:
用户第一次安装应用程序时,在他单击VC3上的按钮后,他会在该事件上切换rootViewController
流程#2:
在用户点击按钮并重新输入应用程序后,他将不会在入职时得到提升,但会被转到“主要”VC,这对你来说是一个开始。非常感谢这真的帮助我走出了我为自己挖的洞。我重新启动了两个故事板,但执行了if userdefaults==“home”{your showmestoryboard}else{display onboarding process}这在SceneDelegate中起了作用。@EriDr如果这对你有效,你应该将其标记为答案对不起,我想是这样的。非常感谢这真的帮助我走出了为自己挖的洞。我用两个故事板重新启动,但执行if userdefaults==“home”{your showmestoryboard}else{display onboarding process}这在SceneDelegate中是有效的。@EriDr如果这对您有效,您应该将其标记为答案抱歉,我想我这样做了。