質問

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

私は2つのコントローラ、MasterViewController(多くのデータを表示する)とLoginViewController(ユーザーをログに記録してそのデータを取得)します。

MasterViewControllerはルートコントローラです。ユーザーがログインしているかどうかを確認するには、このコードが上部にあります。ロードビューメソッドがログインされている場合は、そうでなければログインビューコントローラに連れて行かれます。

- (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がまったくロードされていないことです。ユーザーがビューに戻る前に表示全体をリラードしますか?

ありがとう、 ピーター

役に立ちましたか?

解決

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

  1. 代理人を使用し、マスタービューコントローラでリロードする方法を 'ReloadData'と宣言します。ログインビューコントローラを提示する前に、Master View ControllerをLogInScencessEvent用のデリゲートとして設定してください。ログインが成功したら、デリゲートメソッドを呼び出します。

  2. App DelegateでBoolプロパティ、isReloadNeededを設定します。マスタービューコントローラでは、viewWillAppearまたはviewWillAppearで、このブールをオンにするとデータを再ロードします。 Login View ControllerからBOOLをYESに設定し、マスタービューコントローラでリロード後にリセットします。

  3. Option1:

    Interactionのプロトコルを定義

    @protocol LoginDelegate
    
       -(void) loginSuccessPostProcess;
    
    @end
    
    . ログインビューコントローラの

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

    @property (weak) id< LoginDelegate> loginDelegate;
    
    .

    .m - >閉じ込め前のログインの成功後、デリゲートメソッド

    を呼び出します。
    //Login Success
    [self. loginDelegate loginSuccessPostProcess];
    [self dismissViewControllerAnimated:YES completion:nil];
    
    .

    メインビューコントローラ - >メソッドを実装します。

    .h - >プロトコル

    に採用
      @interface mainViewCOntroller < LoginDelegate>
    
    .

    1. インスタンス化後、

      を提示する前に、ログインビューStrollerのDELEGATEプロパティにメインビューコントローラを設定します。

      LoginViewController * login= [[[loginViewController alloc] init]; //インスタンス化後および提示する前に委任を設定してください login.logindelegate= self; [Self PresentViewController:ログイン];

    2. リロードのための方法を実装

       -(void) loginSuccessPostProcess
       {
              //Your Method.
        }
      
      .

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top