我想知道是否有可能设置一个新的根VC?
我的应用程序使用uinavigation控制器获取init,该控制器具有作为根VC的表视图.
然后从表格视图我运行另一个segue到一个登录窗口(以模态呈现)如果你然后登录你最终在红色的 VC /帐户页面.我现在要做的是将红色VC设置为应用程序的新根VC,并删除所有底层VC.这样我就可以显示菜单按钮/图标而不是"后退"按钮
我找到了这个,但我不明白如何使用它:
let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let yourViewController: ViewController = storyboard.instantiateViewControllerWithIdentifier("respectiveIdentifier") as! ViewController
let navigationController = self.window?.rootViewController as! UINavigationController
navigationController.setViewControllers([yourViewController], animated: true)
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用.因此可以使图中的红色vc充当新的根VC.
升级 Xcode 后,我的应用程序的一个关键部分停止工作。
当我的应用程序启动时,我运行一个函数来检查布尔标志并设置正确的 rootViewController。
但是我用来设置它的代码现在已经停止工作了
class func setLoginAsInitialViewContoller(window:UIWindow) {
print("SET LOGIN")
let storyboard = UIStoryboard(name: "Login", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "LoginViewController")
controller.modalPresentationStyle = .overFullScreen
window.rootViewController = controller
window.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)
特别是当应用程序获得倒数第二行时,window.rootViewController = controller它会因libc++abi.dylib: terminating with uncaught exception of type NSException错误而崩溃。
上面的函数在一个被Utilities.swift调用的类中,我正在从我的内部调用该函数AppDelegate.swift,如下所示:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var storyboard: UIStoryboard? = nil
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.isIdleTimerDisabled = true
Utilities.decideInitialViewController(window: self.window!) …Run Code Online (Sandbox Code Playgroud) 我正在使用 Google 登录屏幕和 swiftUI,但我一直在我的日志中收到一堆我不太理解的消息 - 现在我可以使用这些日志,但我遇到的问题是我可以不要多次调用同一个函数...
import SwiftUI
import GoogleSignIn
class GoogleStuff: UIViewController, GIDSignInDelegate, ObservableObject {
var googleSignIn = GIDSignIn.sharedInstance()
var googleId = ""
var googleIdToken = ""
var googleFirstName = ""
var googleLastName = ""
var googleEmail = ""
var googleProfileURL = ""
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
guard user != nil else {
print("Uh oh. The user cancelled the Google login.")
return
}
print("TOKEN => \(user.authentication.idToken!)")
}
func sign(_ signIn: GIDSignIn!, didDisconnectWith …Run Code Online (Sandbox Code Playgroud)