IOS 5.0以降のアプリのiPadストーリーボードでポップオーバーを作成するにはどうすればよいですか?
Xcodeプロジェクトテンプレート(ユーティリティアプリ)のセットアップはすでに1つありますが、Appleがどのように機能するのか理解できないようです。模倣しようとしましたが、エラーが発生するだけでした。私はAppleの開発サイトを見ましたが、警告とビルドエラーを引き起こす古いコードしか得られませんでした。
CBMainView
とCBMasterView
(すでに含まれているマスタービューを除く)と、UIToolbar
とUIToolbarButton
があります。ユーザーがUIToolbar
のボタンをタップする必要があり、320x300のポップオーバー(CBMasterView
)が表示されます。
Xcodeストーリーボードでこれを行うにはどうすればよいですか?チュートリアル、回答、コード、またはリンクはすべてありがたいです!
IOS 5より前は、モーダルプレゼンテーション(およびコードの山)を介してFirstResponderを使用して別のUIViewController
を表示する必要がありました。
Xcodeのストーリーボードモード(iOS 5以降)でポップオーバーを作成するには、UIButton
またはUIToolbarButton
を使用し、ボタンとUIViewController
の間にストーリーボードセグエを作成します- ポップオーバー。
ボタンと別のUIViewController
の間にセグエを作成するのは簡単です。方法は次のとおりです。
UIViewController
まで。ボタンからマウスの先端まで伸びる水色の線が表示されます。青い線を選択したViewControllerにドラッグすると、小さな黒いメニューが表示されます。このメニューには、さまざまなセグエオプションが表示されます。 Popover
を選択します。
すべてが正しく行われた場合、ボタンが選択されると、このセグエが接続インスペクターに表示されます。
作成するUIViewController
にも、全画面よりも小さいカスタムサイズが必要です。 View Controllerを選択し、そのsizeプロパティをfreeform
またはmaster
(320 x 850)に設定することで、カスタムサイズを設定できます。
私もこの問題の答えを探しています。 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
で行います
もっと簡単な方法があるに違いないと思います。しかし、少なくとも、これは私にとってはうまくいきます。
IOS8でストーリーボードを使用している場合は、この投稿を見て、私に答えてください!
つまり、別のポップアップビューを作成し、背景に不透明度の低い(またはまったくない)色を付け、モーダルセグエを使用してメインビューからポップアップビューに接続します。
次に、ストーリーボードでセグエをクリックし、次に属性インスペクターでプレゼンテーションを「過電流コンテキスト」に変更します(不透明度が0より大きい場合は、クロスディゾルブに移行します)。
私が今まで見た中で最も簡単な方法!