web-dev-qa-db-ja.com

iOS 7でのモーダルビューの表示と非表示

ボタンが付いたビューコントローラがあります。ボタンはプライバシーポリシーです。クリックすると、適切なIBActionに移動し、プライバシーコントローラーを作成します。

 - IBAction ...
{
    PrivacyPolicyViewController *privacy = [[PrivacyPolicyViewController alloc] init];
    .....
}

上にアニメーション化するUIWebViewとiOS 7で閉じるための戻るボタンを持つプライバシーコントローラーのモーダルビューを作成したい.

11
cdub

このようなものを使用してください:

// assuming your controller has identifier "privacy" in the Storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
PrivacyPolicyViewController *privacy = (PrivacyPolicyViewController*)[storyboard instantiateViewControllerWithIdentifier:@"privacy"];

// present
[self presentViewController:privacy animated:YES completion:nil];

// dismiss
[self dismissViewControllerAnimated:YES completion:nil];
47
Jano

[self presentmodalviewcontroller:vc];非推奨になっています。

試すことができます

[self presentViewController:viewController animated:YES completion:nil];

それはあなたのために働くでしょう。

9
creative_rd

ストーリーボードを使用している場合は、セグエを使用してモーダルビューコントローラーを表示し、プログラムで実行できます。

  1. ストーリーボードで、開始ビューの下のバーにあるファイルの所有者アイコンから、Ctrlキーを押しながらドラッグして、モーダルで表示するビューに移動し、放して「モーダル」を選択します。
  2. セグエアイコンをクリックし、属性インスペクタで「toNewView」などの識別子を付けます。
  3. 開始ビューコントローラーの.mファイルで、次のコードを使用してモーダルセグエを実行します:[self performSegueWithIdentifier:@"toNewView" sender:self];

presentViewControllerメソッドの2番目のコントローラーオブジェクトをインスタンス化するために.hファイルをインポートする必要がないので、これはすてきなクリーンな方法です。

それを却下するには、単に nwind segue を使用します。

6
inorganik
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
taskQueeDetails *privacy = (taskQueeDetails*)[storyboard instantiateViewControllerWithIdentifier:@"taskQueeDetails"];

// Present the modal
[self presentViewController:privacy animated:YES completion:nil];

コードを使用して、文字列instantiateViewControllerWithIdentifier:@ "taskQueeDetails"]を変更します。それはうまくいきます

0
NRV