/ /警告が表示され、キャンセルが押されたときに同じビューコントローラに留まる - iphone、ios、objective-c、xcode、storyboard

キャンセルがプッシュされたときに、アラートビューを表示して同じビューコントローラに留まる - iphone、ios、objective-c、xcode、storyboard

2つのビューコントローラを備えたストーリーボードを使用していますセグエ(segue)で互いに接続されている。最初のビューコントローラにはボタンがあり、そのボタンをクリックすると2番目のビューコントローラに移動します。問題は、アラートビューをポップアップしたいのですが、アラートビューを - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender メソッドが、これの問題はそれが行くことです2番目のView Controllerに送信し、その後、アラートビューをポップアップ表示します。最初のビューコントローラーでポップアップし、[キャンセル]ボタンをアラートビューから押すと、最初のビューコントローラーに残ります。どのように私はこれを行うことができます任意のアイデア?

回答:

回答№1は1

これを行うには、次のようなことが必要です。

  • ストーリーボードのボタンからセグを外します。
  • 実装する IBAction そのボタンのために警告を表示する
  • を使用する clickedButtonAtIndex デリゲートのメソッド UIAlertView ボタンを押してください。ユーザーが[OK]を押すと次のビューに進みます

追加する IBAction 次のように:

- (IBAction)showAlert:(id)sender
{
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Can I Move ?"
message:nil
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:@"Cancel",nil];
[message show];
}

そしてデリゲートメソッドを実装する:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"OK"])
{
[self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"Other View"] animated:YES];
}
}

注意: また、あなたは使用することができます performSegueWithIdentifier 次のビューに移動するための


回答№2については2

アラートの結果としてアラートを表示する必要がありますボタンをタップし、アラートの代理人として行動します。アラート完了デリゲートコールバック(alertView:willDismissWithButtonIndex :)を取得した場合にのみ、セグをトリガーするかどうかを決定します。