web-dev-qa-db-ja.com

Xcodeストーリーボードを使用してポップオーバーを作成する方法

IOS 5.0以降のアプリのiPadストーリーボードでポップオーバーを作成するにはどうすればよいですか?

Xcodeプロジェクトテンプレート(ユーティリティアプリ)のセットアップはすでに1つありますが、Appleがどのように機能するのか理解できないようです。模倣しようとしましたが、エラーが発生するだけでした。私はAppleの開発サイトを見ましたが、警告とビルドエラーを引き起こす古いコードしか得られませんでした。

CBMainViewCBMasterView(すでに含まれているマスタービューを除く)と、UIToolbarUIToolbarButtonがあります。ユーザーがUIToolbarのボタンをタップする必要があり、320x300のポップオーバー(CBMasterView)が表示されます。

Xcodeストーリーボードでこれを行うにはどうすればよいですか?チュートリアル、回答、コード、またはリンクはすべてありがたいです!

15
Sam Spencer

IOS 5より前は、モーダルプレゼンテーション(およびコードの山)を介してFirstResponderを使用して別のUIViewControllerを表示する必要がありました。

Xcodeのストーリーボードモード(iOS 5以降)でポップオーバーを作成するには、UIButtonまたはUIToolbarButtonを使用し、ボタンとUIViewControllerの間にストーリーボードセグエを作成します- ポップオーバー

ボタンと別のUIViewControllerの間にセグエを作成するのは簡単です。方法は次のとおりです。

  1. ストーリーボードのボタンをクリックして、 Control+Drag ボタンから選択したUIViewControllerまで。ボタンからマウスの先端まで伸びる水色の線が表示されます。
  2. 青い線を選択したViewControllerにドラッグすると、小さな黒いメニューが表示されます。このメニューには、さまざまなセグエオプションが表示されます。 Popoverを選択します。

    Popover Segue Menu

  3. すべてが正しく行われた場合、ボタンが選択されると、このセグエが接続インスペクターに表示されます。

Use Popover instead of Modal or Push

作成するUIViewControllerにも、全画面よりも小さいカスタムサイズが必要です。 View Controllerを選択し、そのsizeプロパティをfreeformまたはmaster(320 x 850)に設定することで、カスタムサイズを設定できます。

31
Samuel Spencer

私もこの問題の答えを探しています。 NSNotificationを使用して解決しました。

方法は次のとおりです。

ポップアップを表示するViewControllerは、通知を受信するために登録する必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];

languageSetupは呼び出される関数であり、SPVWChangeLanguageはポップアップビューコントローラーで定義する文字列です。

この行をviewDidAppearに追加しました

ここで、ポップアップビューコントローラで、ユーザーがテーブル内の何かを選択したときに次の行を追加します。

[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];

ポップアップを閉じる前に:

[self.popOverController dismissPopoverAnimated:YES];

それで全部です。セレクターlanguageSetup(私の場合)が呼び出されます。 View Controllerがなくなったら、必ず通知を削除してください。

[[NSNotificationCenter defaultCenter] removeObserver:self];

viewWillDisappearで行います

もっと簡単な方法があるに違いないと思います。しかし、少なくとも、これは私にとってはうまくいきます。

0
alvira

IOS8でストーリーボードを使用している場合は、この投稿を見て、私に答えてください!

Swiftで現在のビューの上にモーダルを表示する方法

つまり、別のポップアップビューを作成し、背景に不透明度の低い(またはまったくない)色を付け、モーダルセグエを使用してメインビューからポップアップビューに接続します。

次に、ストーリーボードでセグエをクリックし、次に属性インスペクターでプレゼンテーションを「過電流コンテキスト」に変更します(不透明度が0より大きい場合は、クロスディゾルブに移行します)。

私が今まで見た中で最も簡単な方法!

0
AnitaD