1

誰かが私を正しい方向に向けてくれることを願っています。

MasterViewController (大量のデータを表示する) と LoginViewController (ユーザーをログインさせてそのデータを取得する) の 2 つのコントローラーがあります。

MasterViewController はルート コントローラーです。ユーザーがログインしているかどうかを確認するために、このコードが一番上にあります。ログインしている場合はloadViewメソッドが呼び出され、そうでない場合はログインビューコントローラーに移動します。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDictionary *session = [Global getSession];
    if(!session){

        // Not logged in.
        LoginViewController *loginViewController = [LoginViewController alloc];
        [self.navigationController presentViewController:loginViewController animated:YES completion:nil];

    }else{
        [self loadView];
    }
}

ユーザーがログインすると、次のコードを使用して MasterViewController に戻るコードがあります。

[self dismissViewControllerAnimated:NO completion:nil];

問題は、MasterViewController がまったくロードされていないことです。ユーザーがビューに戻る前に、そのビュー全体を関連付けるにはどうすればよいですか?

ありがとう、ピーター

4

1 に答える 1

1

さまざまな方法があります。

  1. デリゲートを使用し、マスター ビュー コントローラーで「reloadData」と言うリロード用のメソッドを宣言します。ログイン ビュー コントローラーを提示する前に、マスター ビュー コントローラーを loginSuccessEvent のデリゲートとして設定します。ログインが成功したら、それを閉じる前にデリゲート メソッドを呼び出します。

  2. isReloadNeededアプリ デリゲートでbool プロパティを設定します。マスターView Controllerで、viewWillAppearまたはviewWillAppearこのboolをチェックしてデータをリロードします。ログインビューコントローラーからboolをyesに設定し、マスタービューコントローラーでリロード後にリセットします。

オプション 1 を行うには:

対話のプロトコルを定義する

@protocol LoginDelegate

   -(void) loginSuccessPostProcess;

@end

ログイン ビュー コントローラーで。

.h ファイル --> プロパティを宣言

@property (weak) id< LoginDelegate> loginDelegate;

.m --> 閉じる前にログイン成功後、delegate メソッドを呼び出します

//Login Success
[self. loginDelegate loginSuccessPostProcess];
[self dismissViewControllerAnimated:YES completion:nil];

Main view Controller --> メソッドを実装します。

.h --> プロトコルに採用

  @interface mainViewCOntroller < LoginDelegate>

.m

  1. インスタンス化後、それを提示する前に、メインビューコントローラーをログインビューコントローラーのデリゲートプロパティにデリゲートとして設定します

    loginViewController *login = [[LoginViewController alloc] init]; //インスタンス化後、login.loginDelegate = self; を提示する前にデリゲートを設定します。[self presentViewController:ログイン];

リロードのメソッドを実装する

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
于 2014-06-03T15:30:47.723 に答える