2016-03-19 5 views
0

私は自分のモバイルios swiftアプリでgoogleのサインイン機能を実装しており、そのすべてのアクションはAppDelegate.swiftによって処理されています。今、ユーザーがサインインボタンをタップして、自動的に番組すぐにAppDelegateからgui要素を呼び出す方法はありますか?

class ViewController: UIViewController, GIDSignInUIDelegate { 

@IBOutlet weak var loadingIndicator: UIActivityIndicatorView! 
@IBAction func googleSignInButtonAction(sender: AnyObject) { 

    loadingIndicator.startAnimating() 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    loadingIndicator.hidesWhenStopped = true 
} 

:私のUIViewControllerに私はボタンでGoogleの看板には非常に簡単なコードを添付して、私は、プロセス内の伐採が行われている間、ローディングインジケータを表示したいですスピンしているインジケータを開き、サファリビューを開いてログイン情報を要求します。上記のコードはAppDelegateで起こる

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, 
    withError error: NSError!) { 
     if (error != nil) { 
      print("Looks like we have a sign in error: \(error)") 
     }else { 
      //here I'm sending the google token to my backend server and in case of 
      //success I'm redirecting user to the protected panel - 
      //main window of my app: 

       let sb = UIStoryboard(name: "Main", bundle: nil) 
       if let tabBarVC = sb.instantiateViewControllerWithIdentifier("TabController") as? TabController { 
       self.window!.rootViewController = tabBarVC 

      } 

、私のよう:とAppDelegateで全体のプロセスが行われる - ユーザーがそれらを、彼は(それは素晴らしいですので、スピニングインジケータがオンになりましたし)UIViewControllerに再びリダイレクトされた場合質問はどうですか、その場所から、ViewControllerのローディングインジケータを参照して、成功した場合は回転を止めますか?

+0

最初にスピナーを提示しない場合があります。 – nhgrif

+0

時には、ロギングの部分が(特にインターネット接続が不十分な場合)数秒かかる場合があります。その場合、ユーザーはまだロギング画面を見ています。スピナーがまったくないと、彼はかなり混乱するかもしれません。私は、アプリの作者でさえ、時に画面が画面上で何が起こっているのかを見て、ああ、それはちょうど貧しいインターネットだと気づいている。だから私はローディングインジケータを追加して、ユーザー待ち時間の間に通知され、楽しまれます... – randomuser1

+0

NSNotificationを投稿して、あなたのビューコントローラを購読してください – Paulw11

答えて

1

Per Google's docsの場合、GIDSignInシングルトンには2つの異なる代理プロパティがあります。

アプリのAppDelegateGIDSignInDelegateプロトコルを実装し、AppDelegatedelegateとすることをおすすめします。

しかし、あなたが見落としたことは、GIDSignInUIDelegateもあるということです。あなたの適切なビューコントローラは、this protocolを実装する必要があります。おそらく、viewWillAppearメソッドでは、GIDSignInシングルトンのuiDelegateとして割り当てます。

関連する問題