我在停止应用程序委托中的函数的活动指示器时遇到问题,我知道该函数正在被调用,但我的日志中没有收到任何错误。
我正在我的SignInviewControl中创建activityIndicator,就像这样

@IBAction func googleSignInButton(_ sender: Any) {

    GIDSignIn.sharedInstance().uiDelegate = self
    GIDSignIn.sharedInstance().signIn()


    activityIndicator.center = self.view.center
    activityIndicator.hidesWhenStopped = true
    activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.white
    view.addSubview(activityIndicator)

    activityIndicator.startAnimating()
    UIApplication.shared.beginIgnoringInteractionEvents()


}

在我的应用程序委托中完成此操作后,我将拥有此功能,
   func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {

            print("this function is running")
            SignInViewController().stopanimating()

            // ...
            if error != nil {
                // ...


                return
            }

我知道这个函数运行得很好,因为它打印日志ect中的文本。并从signInviewControl调用此函数
func stopanimating() {
        print("stop animating function running")
        DispatchQueue.main.async {
            self.activityIndicator.stopAnimating()
            UIApplication.shared.endIgnoringInteractionEvents()
        }
    }

现在我知道这个函数正在运行,因为它还打印日志中的预期文本,并且endIgnoringInteractionEvents确实工作,但是活动指示器仍在运行
我对swift很陌生,但我以前在appdelegate中处理viewcontrollers中的对象时遇到问题,这可能吗?
提前谢谢

最佳答案

当你这样做时:

SignInViewController().stopanimating()

你要做的是创建一个新的signInviewControl并调用它的方法。你想做的就是让现有的动画停止。
一种方法是:
let vc = (GIDSignIn.sharedInstance().uiDelegate as! SignInViewController)
vc.stopanimating()

你可能想稍后重构它,但这会让你走上正确的道路!

关于ios - 来自应用程序委托(delegate)的stopAnimating事件指示器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46263624/

10-15 12:41