ストーリーボードを使わずにプログラムを完全に最初から作成しています。ViewControllerは、navigateControllerをプログラムで即時に作成するときに複数回表示されます
私のアプリはFirebaseと統合されており、Facebookログインを使用しています。
私のセットアップは非常に簡単です:
- 起動アプリは - > VCが
WelcomeViewController
と呼ばれる最初に移動します。viewDidLoad
メソッドで、ユーザーが既にサインインして存在するかどうかを確認するチェックがあります。存在する場合は、FilmsViewController
FilmsViewController
と呼ばれる2番目のVCに直接送信します。FilmsViewController
は、フィルムを表示するcollectionViewControllerです。ユーザはフィルムを押すことができ、そのフィルムに関するより多くの情報を得る。
(参考のために、私はすでに私のアプリで、Facebookのアカウントで署名しています)
私はステップ2は、上記発生したとき、それはFilmsViewController
に移行し、現在の問題を、持っているが、それそれは2〜3回好きですか?新しいVCが2〜3回表示されるのを確認すると、コンテンツが読み込まれます。ナビゲーションバーのBack
ボタンを押すと、ロードされた2または3のviewControllersに戻り、WelcomeViewController
に戻ります。
私は以下のように私の意見を設定しました。 AppDelegate.swift
で
:
viewDidLoad
でWelcomeViewController
で var window: UIWindow?
var navController: UINavigationController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
navController = UINavigationController()
let firstViewController: WelcomeViewController = WelcomeViewController()
self.navController!.pushViewController(firstViewController, animated: true)
window = UIWindow(frame: UIScreen.main.bounds)
window?.rootViewController = navController
window?.makeKeyAndVisible()
return true
}
:
FIRAuth.auth()?.addStateDidChangeListener { auth, user in
if let user = user {
// User is signed in.
// Direct the user to the home screen
let toFilmListVC = FilmsViewController(collectionViewLayout: UICollectionViewFlowLayout())
self.navigationController?.pushViewController(toFilmListVC, animated: true)
} else { ...
}
}
私は解決策のための負荷を見ている - と何も。私はこの問題に関する記事を1つしか見つけませんでした。誰かが、私がすでに行っていたコントローラーのクラス名を変更することが解決策だと言いました。
誰でもこの問題を解決する手助けはできますか?ありがとうございました。
これは直接あなたの質問に答えることはできませんが、このYouTubeチャンネルが_not_に役立つチュートリアルのトンを持っていますストーリーボードを使用して、このリンクは特にfirebase用です - https://www.youtube.com/playlist?list=PL0dzCUj1L5JEfHqwjBV0XFb9qx9cGXwkq –
@JasonMこれはストーリーボードなしでコーディングを始めるように私に奨励した男です!私は彼のやり方とまったく同じように喜んでいます。これはこれをもっとイライラさせるものです。しかし、ありがとう!ブライアンのチャンネルは素晴らしいと誰もがこれを見て、彼をチェック! – Nick89
のように、addStateDidChangeListenerは最初に複数回呼び出されます。これを分析するためにブレークポイントを設定しましたか?また、WelcomeControllerをNav Controllerに設定する方法がちょっとわかりません。あなたはRootViewControllerとしてwelcomeControllerを使ってnavControllerを初期化する必要があります。まあ、それがうまくいくならば、D。リスナーをチェックしてください;) –