0

初心者の質問だとは思いますが、解決策が見つかりませんでした。ストーリーボード付きのアプリがあります。これはタブ付きのビューアプリであり、各タブはルートビューコントローラーではなくナビゲーションビューコントローラーにつながります。navviewcontrollerにはログインボタンがあります。それを押すと、Facebookとのセッションを開くことを処理するためにアプリデリゲートにメッセージが送信されます。Facebookとのセッションを開いた後、ボタンのタイトルをログアウトに設定したいのですが、それはもう一度押すとどうなるかということです。これはすべて視覚的にプログラムされており、ハードコーディングされていないため、コードの多くが欠落しています。これで、アプリデリゲートのインスタンスが1つしかないことがわかったので、ビューからアクセスするのは非常に簡単です。しかし、アプリデリゲートからビューのアクティブなセッションに移動するにはどうすればよいですか?私はそれをviewDidLoadメソッドに入れようとしましたが、どうやらFacebook APIからのコールバックはビューをリロードしません(また、システムを無料で再び動作させないために、そうすべきではありません)

アプリデリゲートにビューのアクティブセッションにメッセージを送信させる方法はありますか?

4

1 に答える 1

1

これを行う方法はいくつかあります。

  1. ユーザーがログイン/ログアウトしたときにアプリデリゲートを取得して通知を投稿することができ(Facebookライブラリはすでに通知を投稿している可能性がありますか?)、View Controllerはこの通知に登録して、Facebookセッション時に状態を変更できるようにすることができます状態を変更します。viewDidLoadまた、ユーザーが前回のログインからのセッションを持っている場合、コントローラーが正しい初期状態になるように、メソッドで何かを行う必要があります。通知プログラミングの詳細については、https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html#//apple_ref/doc/uid/10000043iを確認してください。
  2. ビューコントローラーにコードを実装しviewWillAppear:animatedて、ユーザーがログインした後にビューが表示されたときに、コントローラーがアプリデリゲートにクエリを実行してセッションの状態を判断できるようにすることができます。これはあなたがコードを入れてやろうとしていることだと思いますviewDidLoadが、ビューはすでにロードされているので、ログイン後にこのコードは呼び出されません。viewWillAppear:animatedビューが表示される直前に呼び出されます。
于 2012-11-19T00:35:19.790 に答える