私は自分のモバイル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
のローディングインジケータを参照して、成功した場合は回転を止めますか?
最初にスピナーを提示しない場合があります。 – nhgrif
時には、ロギングの部分が(特にインターネット接続が不十分な場合)数秒かかる場合があります。その場合、ユーザーはまだロギング画面を見ています。スピナーがまったくないと、彼はかなり混乱するかもしれません。私は、アプリの作者でさえ、時に画面が画面上で何が起こっているのかを見て、ああ、それはちょうど貧しいインターネットだと気づいている。だから私はローディングインジケータを追加して、ユーザー待ち時間の間に通知され、楽しまれます... – randomuser1
NSNotificationを投稿して、あなたのビューコントローラを購読してください – Paulw11