ビュー コントローラーを閉じるときに、ユーザーに入力を求めるプロンプトを表示したいと考えています。この入力は、却下が実際に行われる前に必要です。
ビューコントローラーに次のコードを配置してみました:
-(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
{
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Hello!" message:@"Please enter your name:" delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField * alertTextField = [alert textFieldAtIndex:0];
alertTextField.keyboardType = UIKeyboardTypeNumberPad;
alertTextField.placeholder = @"Enter your name";
[alert show];
[super dismissViewControllerAnimated:flag completion:completion];
}
ただし、UIAlertView はブロックして待機しないため、スーパー コールが実行されます。
この関数からスーパー コールを削除し、alertView:clickedButtonAtIndex: 関数に移動することについて議論していました。まず、dismissViewControllerAnimated に渡されるフラグ変数と完了変数を格納して、alertView:clickedButtonAtIndex: 関数で使用できるようにする必要があると思います。
スーパーコールのためにこれらのパラメータ値を保存する必要がないように、より良いアプローチはありますか?