DismissViewControlLernimatedを使用するときにビューをリロードする方法
-
21-12-2019 - |
質問
誰かが私を正しい方向に向けることができることを願っています。
私は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がまったくロードされていないことです。ユーザーがビューに戻る前に表示全体をリラードしますか?
ありがとう、 ピーター
解決
はさまざまな方法があります。
-
代理人を使用し、マスタービューコントローラでリロードする方法を 'ReloadData'と宣言します。ログインビューコントローラを提示する前に、Master View ControllerをLogInScencessEvent用のデリゲートとして設定してください。ログインが成功したら、デリゲートメソッドを呼び出します。
-
App DelegateでBoolプロパティ、
isReloadNeeded
を設定します。マスタービューコントローラでは、viewWillAppear
またはviewWillAppear
で、このブールをオンにするとデータを再ロードします。 Login View ControllerからBOOLをYESに設定し、マスタービューコントローラでリロード後にリセットします。 -
インスタンス化後、
を提示する前に、ログインビューStrollerのDELEGATEプロパティにメインビューコントローラを設定します。LoginViewController * login= [[[loginViewController alloc] init]; //インスタンス化後および提示する前に委任を設定してください login.logindelegate= self; [Self PresentViewController:ログイン];
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>
.
リロードのための方法を実装
-(void) loginSuccessPostProcess
{
//Your Method.
}
.