Swift:在AppDelegate.Swift中执行Segue
我已经成功地将Google登录集成到我的AppDelegate.swift文件中的iOS应用程序中,并且可以成功地检测到成功登录(通过在控制台上打印“success”(成功)。问题是,成功登录后,当我想进入应用程序的下一个屏幕时,我会回到谷歌登录页面 AppDelegate.swift文件无法识别performsgue函数,因为它是UIViewController类的函数(如果我错了,请更正)。为了解决这个问题,我在ViewController文件中创建了一个全局变量,以便在更改此值时执行segue: AppDelegate.swift:Swift:在AppDelegate.Swift中执行Segue,swift,Swift,我已经成功地将Google登录集成到我的AppDelegate.swift文件中的iOS应用程序中,并且可以成功地检测到成功登录(通过在控制台上打印“success”(成功)。问题是,成功登录后,当我想进入应用程序的下一个屏幕时,我会回到谷歌登录页面 AppDelegate.swift文件无法识别performsgue函数,因为它是UIViewController类的函数(如果我错了,请更正)。为了解决这个问题,我在ViewController文件中创建了一个全局变量,以便在更改此值时执行seg
var userSignedInGlobal = "n/a"
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, GIDSignInDelegate {
// A bunch of code that implements the Google Sign in ...
print("Successfully logged into Google.", user)
userSignedInGlobal = "success"
}
然后是我的InitialViewController.swift文件:
class InitialViewController: UIViewController, GIDSignInUIDelegate {
var userSignedIn = userSignedInGlobal {
didSet {
performSegue(withIdentifier: "segueOne", sender: self)
}
}
// A bunch of irrelevant code.
}
这不起作用,我认为这不起作用的原因是InitialViewController.swift文件中的userSignedInGlobal是通过引用传递的-因此,即使其值更改,userSignedIn的值也不会更改(再次,如果我错了,请纠正我)
为了解决这个问题,我将InitialViewController.swift文件更改如下:
var userSignedIn = userSignedInGlobal {
didSet {
doSegue()
}
}
class InitialViewController: UIViewController, GIDSignInUIDelegate {
func doSegue() {
performSegue(withIdentifier: "segueOne", sender: self)
}
// A bunch of irrelevant code.
}
这在第三行给了我一个错误:“使用未解析标识符'doSegue()'”
当登录成功时,我不知道如何执行segue。任何帮助都将不胜感激,提前感谢 这里有几个问题:
希望这有帮助 这里有几个问题:
希望这有帮助 注:请注意,将您的初始值VC设置为GIDSignInDelegate和GIDSignInUIDelegate是可以的。这简化了事情,您可以找到大量使用该方法的示例。但是,如果您想让您的AppDelegate充当GidSignInElegate,让您的VC充当GIDSignInUIDelegate(如代码片段中所示),那么您可能需要考虑使用NotificationCenter将消息从AppDelegate的signIn func传递给VC。观察者(将在你的VC中)可以进行性能测试或其他任何操作。谢谢你的回复!我尝试将Google登录代码移动到我的VC中,但由于某种原因,该函数从未被调用……我很困惑为什么。你有什么想法吗?附言:请注意,让你的初始VC成为GIDSignInDelegate和gidsigninudelegate是可以的。这简化了事情,您可以找到大量使用该方法的示例。但是,如果您想让您的AppDelegate充当GidSignInElegate,让您的VC充当GIDSignInUIDelegate(如代码片段中所示),那么您可能需要考虑使用NotificationCenter将消息从AppDelegate的signIn func传递给VC。观察者(将在你的VC中)可以进行性能测试或其他任何操作。谢谢你的回复!我尝试将Google登录代码移动到我的VC中,但由于某种原因,该函数从未被调用……我很困惑为什么。你有什么想法吗?