0

タブコントローラーにコントローラーが接続された2つのUIビューがあります。

ViewA - 認証に使用 (ログイン テキスト フィールドと送信ボタンを含む)

ViewB - プロファイルを表示するために使用されます。

ストーリーボードのユーティリティ マネージャーを使用して ViewB を無効に設定しました。これは、ユーザーがログインする前にタブをクリックするのを防ぐためです。ViewA で認証されたら、ViewB に通知して有効にし、プロファイルを表示します。

グーグルから、NSNotificationcenterを使用することがこれを行うための最良の方法であるように見えます.私は正常に動作する単純なpostNotifiactionを作成しました-しかし、ViewBでレシーバーを追加する場所がわかりません。そもそも無効になっていますか?

通知センターはこれを行うための最良の方法ですか?

また、無効になっているビューに通知を送信するにはどうすればよいですか?

ありがとう

4

5 に答える 5

0

確かに、ViewB の無効状態を制御するコントローラー (もしあれば AppDelegate) はありますか? このコントローラー インスタンスからの通知をリッスンし、通知を受信したら ViewB を有効にすることができます。

ViewB からの通知をサブスクライブする必要がある場合は、(ViewB の) init メソッドで登録します (dealloc メソッドで通知のサブスクライブを解除することを忘れないでください)。ViewB にアクセスするために使用されるボタンが無効になっている場合でも、アプリの起動時に ViewB インスタンスがインスタンス化されるため (または私が推測する...)、これは機能するはずです。

ボタンがタップされるまでViewBをインスタンス化しない場合は、ViewBボタンを有効/無効にするコントローラーが、通知をリッスンし、ボタンがViewBにアクセスできるようにする必要があります。

于 2012-08-02T10:52:37.007 に答える
0

このロジックは少しあいまいだと思います。これはあなたのアプリケーションについて私が理解したことです:

-> タブバーコントローラー

---> コントローラ 1 - ログイン

---> コントローラー 2 - プロファイル (デフォルトでは無効)

通知を Controller 2 に挿入するのではなく、TabBar に挿入する必要があります。これは、他のコントローラーを「制御」するためです (ジョークという言葉で申し訳ありません)。最善の解決策はこれだと思います:

タブバー

「ユーザーが変更されました」に関する通知のオブザーバーとチェック: ユーザーがログインしている場合はプロファイルコントローラーを有効にし、ユーザーが匿名の場合は無効にします。

コントローラ 1 - ログイン

ユーザーがログイン/ログアウトすると、「ユーザーが変更されました」という通知が発生します。

以上で、コントローラー 2 はユーザーの状態を知らなくても生きていくことができます。このロジックのコーディングに問題がある場合はお知らせください。

于 2012-08-02T10:55:31.333 に答える
0

http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html

上記のAppleのドキュメントリンクは、NSNotificationCenterがオブザーバーを保持していないことを明確に述べています。そのため、dataAnalyzerをそこで解放することはできません.

各View Controllerの -init メソッドで通知を購読します。これにより、コントローラーが作成および初期化され、各コントローラーが独自のアクションを担当するようになります。

あなたの質問が何であるか完全にはわかりません。上記で問題が解決しない場合は、言い換えていただけますか。

また、NSNotificationCenter はすべてのオブザーバーに投稿しますが、非同期ではないことに注意してください。次のオブジェクトに送信する前に、それぞれが通知の処理を完了するのを待ちます。

于 2012-08-02T10:47:19.387 に答える
0

メソッドを呼び出すだけ[viewB enableItselfSomehow];ではないのはなぜですか?-someAuthenticationSucceedFeedback

ビューを有効/無効にするだけの通知を登録するのは、私にとっては悪い調子です

于 2012-08-02T10:58:14.960 に答える
0

ビューまたはタブ ボタンを無効にしましたか?

タブボタンを無効にした場合、それを有効にしてプロファイルタブに切り替えることができます。

self.tabBarController.selectedViewController = profileViewController;

このコードを ViewA のビュー コントローラーに配置できます。profileViewController を取得するには、代わりにこのコードを使用できます

 self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1]

プロファイルがインデックス 1 であると仮定すると、

于 2012-08-02T10:49:23.253 に答える