問題タブ [uipresentationcontroller]
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.
swift - iOS での特性の収集を支援する以外に、UIPresentationController の必要性は何ですか?
サブビューを追加して表示したいビューをアニメーション化するだけでなく、UIPresentationController の利点は何ですか? 準拠しなければならないすべてのプロトコルを考えると少し面倒に思えますが、多くの人は依然として単純なフレーム アニメーションでビューを表示することを好みます。クラスを導入する際の Apple のロジックは何でしたか?
ios - NavigationController を閉じることができません
こんにちは皆さん、NavigationController を閉じるのに問題があります。このコードは機能しません。ViewController で呼び出そうとすると
これは、最初の ViewController で行っていることです。カスタム遷移を持つ ProfileViewController を開くだけです。
カスタムトランジションの画面から端からスワイプできるようにするために、NavigationControllerTransition を呼び出すカスタム NavigationController クラスがあります。
そのため、スワイプして ViewController を開いたり閉じたりすることができ、トランジションはうまく機能します。唯一の問題は、UIButton を使用して ViewController を閉じようとしたときです。NavigationController は閉じたりフリーズしたりしません。任意のヒント ?:(
ios - カスタム モーダル プレゼンテーションで UIViewController が presentingViewController として機能するには何が必要ですか?
Apple のビュー コントローラー プログラミング ガイドには次のように記載されています(強調を追加)。
presentViewController:animated:completion: メソッドを呼び出すビュー コントローラーは、実際にモーダル プレゼンテーションを実行するものではない場合があります。プレゼンテーション スタイルは、View Controller の表示方法を決定します。これには、View Controller の表示に必要な特性が含まれます。たとえば、フルスクリーン プレゼンテーションは、フルスクリーン ビュー コントローラーによって開始される必要があります。現在表示しているビュー コントローラーが適切でない場合、UIKit は適切なビュー コントローラーが見つかるまでビュー コントローラー階層をたどります。モーダル プレゼンテーションが完了すると、UIKit は、影響を受けるビュー コントローラーの presentingViewController およびpresentedViewController プロパティを更新します。
UIPresentationController サブクラスを使用してカスタム ビュー コントローラー プレゼンテーションを実装しようとしています。ビューコントローラーを提示すると:
...presentingViewController
プロパティは、プレゼンテーションを開始したビュー コントローラーよりも上位の階層にあるビュー コントローラーを参照します。UIModalPresentationStyle.custom
これは、表示中のビュー コントローラーに必要な不可思議な要件を私が満たしていないことを示しているため、別の場所を探しました。
問題は、これらの要件がどこにも文書化されていないことです。また、それらを把握することもできません。プレゼンテーション コントローラで開始ビュー コントローラへの参照が必要です。そして、わかりました、自分で参照を提供することで問題を完全に回避できますが、無知な間違いを回避するコードを作成するよりも、正しい方法で物事を行うことを好みます.
を使用するときにView ControllerがプレゼンティングView Controllerとしての資格を得るために何をしなければならないか知っている人はいますUIModalPresentationStyle.custom
か? ありがとう!
ios - runTransitionForCurrentState でアプリがクラッシュするが、理由の手がかりがない
私はこれを検索しようとしましたが、運がなかったので、答えを知っている教祖がいることを願っています.
特定のスタック トレースでアプリがクラッシュしているというレポートが iTunes Connect で大量に表示されますが、スタック トレースには何の役にも立たないことがわかります。
レポートにパターンはなく、iOS 9.1、9.2、9.3-10、およびさまざまな iPhone と iPad で発生し、再現に役立つ手がかりもありません。
誰かが以前にこのようなことを経験したことがあり、何が原因であるかについて洞察/疑いを持っていますか?
ios - UIPresentationController の目に見える @interface はセレクター initWithPresentingViewController:presentedViewController を宣言しません
WWDC 2014 のビデオA Look Inside Presentation Controllers
を見ていました。セッション用のソース コード ( で記述Objective-C
) をダウンロードし、ビルドしようとすると、次のエラーが発生しました。
UIPresentationController の目に見える @interface はセレクター initWithPresentingViewController:presentedViewController を宣言しません。
メソッドはにあると思われますUIPresentationController
か?
ios - アニメーションなしのカスタム ビュー コントローラー プレゼンテーション
いくつかのカスタム モーダル プレゼンテーションとカスタム コントローラー (UIViewController のサブクラス) を提示します。これは独自の移行デリゲートであり、アニメーション化された移行オブジェクトとプレゼンテーション コントローラーを返します。アニメーション化されたトランジション オブジェクトを使用して、表示時に表示されたビューをコンテナー ビューに追加し、閉じるときにそれを削除し、もちろんアニメーション化します。プレゼンテーション コントローラーを使用してヘルパー サブビューを追加します。
presentViewController
コントローラーを提示し、プロパティに true を渡すと、すべて正常に動作しanimated
ます。しかし、アニメーションなしで表示したいときに false を渡すと、UIKit はpresentationControllerForPresentedViewController
メソッドを呼び出すだけで、まったく呼び出しませんanimationControllerForPresentedController
。そして、提示されたビューがビュー階層に追加され、作成されないアニメーション遷移オブジェクトに配置される限り、何も提示されません。
私がやっていることは、トランジションがアニメーション化されているかどうかをプレゼンテーションコントローラーでチェックしていることです。アニメーション化されていない場合は、アニメーション化されたトランジションオブジェクトを手動で作成し、ビューをセットアップします。
それは機能しますが、それが最善のアプローチであるかどうかはわかりません。
ドキュメンテーションによると、プレゼンテーション コントローラーは遷移中の追加のセットアップまたはアニメーションの実行のみを担当し、プレゼンテーションの主な作業はアニメーション化された遷移オブジェクトで行う必要があります。
ビューを常にプレゼンテーション コントローラーに設定し、アニメーション化されたトランジション オブジェクトでのみアニメーション化しても問題ありませんか?
その問題を解決するためのより良い方法はありますか?
ios - UIModalPresentationStyle.custom での definePresentationContext の使用
ビュー コントローラー コンテインメントを使用して、カスタムの方法で他のビュー コントローラーをモーダルに表示できる子ビュー コントローラーのセットを管理しています。
を使用してView Controllerから表示するときにdefinesPresentationContext
プロパティが使用されないという問題に遭遇しましたUIModalPresentationStyle.custom
ROOT
例として、 、A
、およびの3 つのビュー コントローラーがあります。B
A
の子ですROOT
。カスタム、、およびを使用してB
からモーダルに表示したいと思います。A
UIPresentationController
UIViewControllerTransitioningDelegate
UIViewControllerAnimatedTransitioning
したがって、コントローラーのコード内で次のことを行います(コントローラーが に設定されていることにA
注意してください)。A
definesPresentationContext
true
ただし、私のプレゼンテーション コントローラー (これも私のUIViewControllerAnimatedTransitioning
) 内で、次の問題が発生します。
この関数ではfromVC
、タイプが であると予想されますがA
、実際にはROOT
です。A
を指定しているにもかかわらず、definesPresentationContext
.
を使っているからだと思いUIModalPresentationStyle.custom
ます。だから私はそれをUIModalPresentationStyle.overCurrentContext
definesPresentationContext
これにより、iOS は からプロパティを正しく読み取るようA
になり、animateTransition
ビュー コントローラーから正しい関数が呼び出されるようになりましたが、次のようになります。
モーダル プレゼンテーション スタイルが ではなくなったため.custom
、遷移中のデリゲートの次のメソッドが呼び出されなくなりました
したがって、私のプレゼンテーションコントローラーは使用されなくなります。
.custom
を尊重するモーダル遷移スタイルが必要ですdefinesPresentationContext
。これは可能ですか?何か不足していますか?
基本的に、現在のコンテキスト内でカスタム モーダル プレゼンテーションが必要です。