3

私はiPhoneアプリケーションに2つのViewControllerを持っています。

1.)FirstVC

2.)SecondVC

私のFirstVCにはボタンが1つあります。そのボタンをタップすることで、でSecondVCを開きましたpresentModalViewController。以下のコードを見てください。

- (IBAction)buttonClicked:(id)sender
{
    SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
    [self.navigationController presentModalViewController:secondVC animated:YES];
}

SecondVCに移動しました。SecondVCでは、ナビゲーションバーと「キャンセル」ボタンをleftBarButtonItemとして作成しています。キャンセルボタンにボタンクリックイベントを設定しました。その方法では、SecondVCを却下したいと思います。以下のメソッドはSecondVCにあります。以下のコードを見てください。

- (void)cancelButtonClicked
{
  [self dismissModalViewControllerAnimated:YES];
}

このコードは機能しません。このコードでSecondVCを却下することはできません。別のトリックを提案してください。

4

4 に答える 4

5

ボタンコードをこれに変更します。

- (IBAction)buttonClicked:(id)sender
{
    SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
 [self presentViewController:secondVC animated:YES completion:NULL];

}

cancelButtonClickで

-(void)cancelButtonClicked {
 [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];

}
于 2012-10-30T12:17:14.603 に答える
3

dismissModalViewControllerAnimated:間違ったオブジェクトにメッセージを送信しています。

ナビゲーションコントローラーを介してモーダルビューコントローラーを提示したので、次のように呼び出す必要があります。

[self.presentingViewController dismissModalViewControllerAnimated:YES];

これはiOS5以降で機能します。iOS 5以降のみを対象としている場合は、iOS 5以降で利用可能な新しいメソッドを使用して、モーダルビューコントローラーを管理することも考えられます。

– presentViewController:animated:completion:
– dismissViewControllerAnimated:completion:

しかし、これは必須ではないと思います。

iOS 4以前をサポートする場合は、モーダルビューコントローラーにプロパティを追加する必要があります。

@interface SecondVC : UIViewController
@property (nonatomic, weak/assign) UIViewController* presentingController;
...
@end

コントローラをモーダルに表示する前に設定します。

- (IBAction)buttonClicked:(id)sender
{
     SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
     secondVC.presentingController = self.navigationController;
     [self.navigationController presentModalViewController:secondVC animated:YES];
}

次に、以下を使用します。

[self.presentingController dismissModalViewControllerAnimated:YES];
于 2012-10-30T12:16:28.877 に答える
0

コードを次のコードに置き換えてください...コード

- (IBAction)buttonClicked:(id)sender
{
    SecondVC *secondVC = [SecondVC alloc] initWithNibName:@"SecondVC" bundle:nil];
    [self presentModalViewController:secondVC animated:YES];
}

- (void)cancelButtonClicked
{
   [self dismissModalViewControllerAnimated:YES];
}
于 2012-10-30T13:47:53.867 に答える
0

現在のsecondVCでこれを試してください...

[self presentModalViewController:secondVC animated:YES];
于 2012-10-30T12:16:39.597 に答える