次のようなnibファイルを使用してログインビューコントローラーを作成しました。
//loginVC は、ルート ビュー コントローラーのローカル メソッド内のローカル変数です。このメソッドは、ユーザーのログイン ボタンが押されたときに呼び出されます。
loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
次に、このログイン ビュー コントローラーをルート ビュー コントローラーのモーダル ビュー コントローラーとして次のように提示します。
[self presentViewController:loginVC animated:YES completion:nil];
これまでのところ完全に機能しますが、サーバーからエラー応答 (HTTP 応答 404) や別の HTTP サーバーまたはクライアント エラー応答を受け取った場合、このモーダル ビュー コントローラー (ログイン ビュー コントローラー) のアラート ビューにこのエラー メッセージを表示します。 )、これも機能します。この手順の後、ユーザーがこのアラート ビューで [OK] ボタンを押すと、View Controller がリセットされます。次の手順でこれを達成します。
-i ルート ビュー コントローラーで、refreshLoginView というデリゲート メソッドを定義しました。
-i このメソッドを次のように実装しました。
-(void)refreshLoginView
{
[self dismissViewControllerAnimated:YES completion:^{
LoginViewController *loginVC = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
loginVC.delegate = self;
[self presentViewController:loginVC animated:YES completion:nil];
}];
}
-ユーザーがアラートビューのOKボタンを押すと、このメソッドが呼び出され、新しいログインコントローラーが作成されます。これも機能しますが、ユーザーが送信ボタンが押されました。
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0){
[self.delegate refreshLoginView];
}
}
私の質問は;
このログイン ビュー コントローラー (モーダル ビュー コントローラー) を更新するにはどうすればよいですか? 私のやり方が正しいかどうかはわかりません。私のやり方が正しければ、uibutton (送信ボタン) を正しく更新するにはどうすればよいですか?
すべてのコントローラー (テキストフィールド、ラベル、ボタン) は視覚的に作成され、次のように IBOutlets を使用して loginview コントローラーに接続されます。
@property (retain, nonatomic) IBOutlet UIButton *btnSubmit;
@property (retain, nonatomic) IBOutlet UILabel *lblUsername;
@property (retain, nonatomic) IBOutlet UILabel *lblPassword;
@property (retain, nonatomic) IBOutlet UITextField *txtUsername;
@property (retain, nonatomic) IBOutlet UITextField *txtPassword;