問題タブ [childviewcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - iOSのparentViewControllerのプロパティへのアクセス
parentViewController のメソッドにアクセスしようとすると、アプリがクラッシュします。これがストーリーボードのレイアウトです
MainViewController = STLMMainViewController (ParentViewController)
Scene1 = STLMTimeDateViewController (ChildViewController)
STLMTimeDateViewController のコードは次のとおりです。
アプリは実行されますが、STLMMainViewController が呼び出されると、アプリは次のエラーでクラッシュします。
次の行を削除すると:
そしてただ去る
アプリは実行され、エラーは発生しませんが、[STLMMainViewController locationButtonSelected] の次のメソッドが呼び出されません (ログは表示されません)。
locationButtonSelected メソッドのすべてのプロパティとメソッド自体は、パブリック アクセスのために STLMMainViewController の .h で宣言されています。
ありがとう
ios - Container View Controllers - アクションの親に通知
次のようなカスタム コンテナー ビュー コントローラー (MainViewController) があるとします。
HomeViewController には「go」などのボタンがあり、これを押すと次のビュー コントローラに進む必要があります。したがって、このアクションを MainViewController に通知する必要があります。これを行う最善の方法は何ですか?
ビュー コントローラー間でカスタム トランジションを行う必要があるため、カスタム コンテナーを使用しています。「go」を押すと、HomeViewController のビューの一部がアニメーション化され、新しいビュー コントローラーのビューが所定の位置にアニメーション化されます。
明らかに、HomeViewController に MainViewController 型のプロパティを指定して、そのように呼び出すこともできますが、コンテナー ビュー コントローラー API を使用したよりクリーンな方法があることを願っています。
ios - 子UIViewControllerをいつどのように無効にするか
次のコードを使用して、子ViewControllerをプライマリViewControllerに追加しています。
子ビューコントローラーが制御しているビューには、タップすると子ビューと子ビューコントローラーをプライマリビューコントローラーから削除するボタンが含まれています。
ボタンが押されたときに実行される子ViewControllerのメソッドは、次のようになります。
そして、子ViewControllerを閉じるプライマリViewControllerのメソッドは次のようになります。
このコードはすべて機能します。ただし、子ビューコントローラの-(void)photoLibraryCloseButtonTapped:(id)senderメソッドがまだ実行されている間(つまり、-(void)photoLibraryRequestingCloseメソッドはまだ返されていませんが、子ビューコントローラはnilに設定されているようですが、 photoLibraryRequestingCloseを呼び出した子ビューコントローラーを無効にします。
ARCを使用しています。
これが機能する理由と、子コントローラーの削除をトリガーするボタンが子ビューコントローラーによって管理されていることを念頭に置いて、子ビューコントローラーの削除を別の方法で管理する必要があります。
どうもありがとう。
ios - 複数の子ViewControllerにメッセージを送信するための最良の方法
UIViewController
複数の子ビューコントローラーを持つカスタムを実装しました(主にストーリーボードを使用しContainer View
ますが、それだけではありません)。
送信されたメッセージに関係する子のViewControllerが必ずしも直接の子であるとは限らないことを考慮して、「root」ビューコントローラがその子にメッセージを送信するための最良の方法は何でしょうか。 「ルート」ビューコントローラ?
例えば:
#0
ビューコントローラ#1
とにメッセージを送信したい#4
。ナイーブな実装は#0
、次のように、の子を反復処理してメッセージを送信することです。
ただし、メッセージを受信し(または、カスタムメソッドを呼び出している#3
場合はおそらく受信せず)、その子に伝播しないため、単純に機能しません(ここ)。UINavigationController
#4
それで、自分の子供にメッセージを送信し、そのメッセージを階層全体に伝播させる可能性はありますか?UIViewController
そうでない場合は、を使用してNSNotificationCenter
、メッセージに関心のある子(#1
および#4
)に通知を監視させ、必要に応じてルートビューコントローラーに通知を投稿させることもできます。しかし、2人の子供にメッセージを送るだけでは少しやり過ぎだと思います。
ios - UINavigationControllerの子としてのUINavigationController
タイトルが質問自体を説明しているかどうかはわかりませんが、ここにあります...
UINavigationControllerのparentViewControllerであるUINavigationControllerがあります。子として追加すると、最初にstatusBarのギャップがあり(画面全体を占めるわけではありません)、navigationBarを非表示にして表示することでその「バグ」を「解決」すると、childViewControllerの動作がおかしくなります。ギャップはなくなりますが、子供は私が手動で設定したフレームを尊重しなくなります。それから私は続けようとしました、そして私が子供にモーダルを提示してそれを却下すると、子供全体が去ります...
そこで何が悪いのでしょうか?両方のコンテナとの親子関係または何ですか?
アドバイスありがとう
編集:これは奇妙な振る舞いを示すサンプルプロジェクトです
http://www.mediafire.com/?8saa68daqfkf335
編集2:私は実際に解決策を見つけましたが、Apple Docsでそれが本当に明確であるとは思いませんでした、それは、childViewControllersがそれらが属するparentViewControllerからフレームを取得すると言いますが、parentViewControllerが「再表示」された場合(それをプッシュ)childViewControllersはparentViewControllerフレームによって再びサイズ変更されます...これが誰かに役立つことを願っています
ios - iOS - 親View Controllerで子View Controllerを即座に表示する
ボタンのクリックで動的View Controllerを表示する複数のView Controllerがあります。View Controllerのレイアウトは次のとおりです。
「計算ビュー」ビューは、「開始」ボタンが押されるまで何も表示されません。ユーザーが「開始」ボタンを押すと、View Controller 2 の「calculationView」に子 View Controller が表示されます(ここには示されていません)。
View Controller 2 の戻る矢印をクリックすると、ユーザーはタブ バーの項目 1 に戻り、同じ View Controller が CalculationView の View Controller 2 に表示されます。
これで、View Controller 1 の CalculationView のコンテンツがビューの表示から約 1 秒後に表示されることを除いて、すべて正常に動作します。
View Controller 2でcalculationViewをロードする方法は次のとおりです。
runInProgress BOOL を使用してビュー コントローラー 1 に CalculationView を表示する方法を次に示します。
質問:
私の質問は、計算ビューがビューコントローラー1と同時に表示されるようにするにはどうすればよいかということです。
また、デザインの質問があります。計算ビューは、すべてのビュー コントローラーの静的な場所に配置されます。runInProgress BOOLに基づいて、すべてのView ControllerにcalculationViewを表示するより良い方法はありますか?
ios - iphone5での子View Controllerのビューフレームの挙動がおかしい
私がやろうとしているのは、View Controller を作成し、そのビューを右からアニメーション化することです。メインのView Controllerには、このビューを格納するviewContainerというビューがあります。奇妙なことに、これはシミュレーターと ipod 4g では完全に機能しますが、iPhone5 (両方とも ios6 を実行) では機能しません。
iPod 4g では、新しいビューは右から正しくアニメーション化されます。ただし、iPhone5 では、ビューはすぐに (0,0) に表示されます。何が原因でしょうか?
uiviewcontroller - インターフェイス ビルダーでコンテナー/子ビュー コントローラーの関係を作成する方法
コードから2つのView Controller間の親子関係を作成するには、基本的に次のようなことをするだけです:
ここで、selfは親ビュー コントローラーです。
しかし、Interface Builder から完全に同じ関係を作成したい場合はどうすればよいでしょうか?
言い換えれば、Interface Builder を使用してメソッド addChildViewController の動作を再作成する方法はありますか?
それに関するドキュメントはあまり見つかりませんでした。このトピックに関する古い未解決の投稿があります: https://devforums.apple.com/message/455758#455758
addChildViewController 関係を適切に設定しないと、私の質問の元である子ビュー コントローラーに回転メソッドが転送されません。
これは私がIBで行ったことです:
- 「View Controller」オブジェクトを「Object Library」パネルから「Objects」パネルにドラッグ アンド ドロップします。
- ID インスペクターで、そのクラスを UIViewController サブクラス ("Items View Controller") に変更しました。
- ビューアウトレットをコントローラーに接続しました
- 他のすべての必要なコンセントをコントローラーに接続しました (リスト名、テーブル ビュー)
写真の最初の「ビュー」オブジェクトは、親ビュー コントローラーのビューです。代わりに、強調表示された「ビュー」は、子ビュー コントローラー (「アイテム ビュー コントローラー」) のビューです。
コンテナー コントローラーは、追加の IBOutlet を介して子インスタンスも保持します。
ありがとう
更新 1:コンテナー コントローラーの viewDidLoad で親子関係を手動で設定すると、すべての回転メソッドが子に正しく転送されます。
しかし、IBを使用してすべてを行いたいので、これが正しい方法であるかどうかはよくわかりません。
更新 2:オブジェクト ライブラリで「コンテナー ビュー」を使用するためのヒントをくれた @micantox に感謝します。xib ファイルをストーリーボードに変換したところ、子ビュー コントローラーが親に追加されたので、その必要はありません。 addChildViewController を使用してコードから手動で追加すると、回転メソッドが期待どおりに転送されます。
「コンテナ ビュー」は基本的に埋め込みセグエを実装し、iOS 6 からのみサポートされます。
これは、ストーリーボードの更新されたスクリーンショットです。