問題タブ [unwind-segue]
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 - ロケーション マネージャーが原因でセグエをアンワインドした後にクラッシュする
ルートビューコントローラーに巻き戻すビューコントローラーがいくつかあります。ほとんどのビュー コントローラーでは、アンワインド セグエはアプリをクラッシュさせることなくうまく機能します。CLlocationmanager を使用するビューコントローラーのみが、ルート ビューコントローラーへのアンワインド セグエを実行できません。これらは私のコードで違いを生む行です:
私のコードのこのセクションにコメントすることで、アンワインドが機能します。特に最後の行が違います。巻き戻す前に、locationmanager を解放しようとしました。時々それはうまくいきます。そうでない場合もあります。デバッグ コンソールには次のように表示されます。
それがどのような意味でも。どうすればいいのかわかりません。
編集
これを追加した後
それは一種の作品です。5回くらい試しました。その後、再びクラッシュしました:(本当に奇妙です。よくわかりませんが、エラーメッセージが変更されたようです。「WebThread」と表示されます(以下を参照)。デリゲートメソッドも持つWebビューがあります。Webビューを次のように解放しようとします良い。
EDIT2
OK、prepareforsegue メソッドでロケーション マネージャーと webview を解放すると、機能します。
ios - アンワインド セグエは、モーダルでない場合にアダプティブ ポップオーバー プレゼンテーションを閉じない
iOS 9 ベータ版の更新: Apple は iOS 9 でこれを修正した可能性があります。iOS 8 でこの問題を回避する場合は、iOS 9 でも正しく動作することを確認してください。
ストーリーボードでは、ポップオーバー プレゼンテーション セグエを作成して、ボタンからナビゲーションおよびビュー コントローラーを表示し、アンワインド セグエを作成しました。
縦向きでは、モーダル (フルスクリーン) プレゼンテーションは期待どおりに巻き戻されます/閉じられます。
横向きでは、アンワインド セグエも呼び出されますが、ポップオーバー プレゼンテーションは自動的に閉じられません。
私は何かを接続するのを逃しましたか?ポップオーバー プレゼンテーションを自分で閉じる必要がありますか?
更新: gabbler のサンプル コードを見た後、私は問題をシングル ビュー アプリケーションでは問題なくポップオーバーを閉じることに絞り込みましたが、マスター/詳細アプリケーションではそうではありませんでした。
更新 2: Luis が尋ねた質問への回答として、階層は次のようになります (簡単にするためにナビゲーション コントローラーは省略しています)。
- スプリットビューコントローラー
- マスター ビュー コントローラー
- 詳細ビューコントローラー
- チャプター ビュー コントローラー (モーダル ページ シート)
- ビューコントローラーを選択します(チャプタービューコントローラーに巻き戻すが、閉じない問題のあるポップオーバー)
- チャプター ビュー コントローラー (モーダル ページ シート)
前回の更新で述べたように、新しいマスター/詳細テンプレートを作成し、詳細ビュー (のボタン) から直接ポップオーバーを表示しました。それは却下しません。
ios - グローバル アンワインド セグエ
アプリの外部でトリガーできるリセット通知があり、データが無効になったため、ユーザーが行っていたことはすべて終了してメイン画面に戻ります。現在、すべてのView Controllerにアンワインドセグエを配置する必要がありますが、この通知が発生するたびにグローバルPerformSegueWithIdentifierをプログラムで呼び出したいだけです。かなりの数のビュー コントローラーがあり、このコードをどこにでも複製する必要があるのは良くありません。新しいビュー コントローラーがプロジェクトに追加されると、メンテナンスの問題になります。これを行う簡単な方法はありますか?
ios - UIPopoverController から Segue をアンワインドする
送信してからUIViewController
ロードしたことがわかりました(アプリのメインのストーリーボードではありません)。UIStoryboard
initialViewController
そのストーリーボードで使用されているアンワインド セグエがあります。その出口点は、メインのUIViewController
シーンに存在する のアンワインド アクションにあります。 UIStoryboard
このView Controllerをセグエではなくコードで表示します。
ロードされたビュー コントローラーを で提示するとpresentViewController:animated:completion:
、アンワインド セグエが正常に機能し、適切なハンドラーが見つかります。
ただし、表示されたビュー コントローラーを でラップしてからポップオーバーを表示すると、アンワインド セグエが機能しません。UIPopoverController
アンワインド アクションをブレークポイントできますが、呼び出されません。
アンワインド セグエがどのように機能するかに関するテクニカル ノートで、Apple は宛先ビュー コントローラーを検索するプロセスについて説明しています。
アンワインド セグエが宛先ビュー コントローラーを決定する方法 アンワインド セグエが開始されると、アンワインド セグエの作成時に指定されたアンワインド アクションを実装するナビゲーション階層で最も近いビュー コントローラーを最初に見つける必要があります。このビュー コントローラーは、アンワインド セグエの宛先になります。適切なビュー コントローラーが見つからない場合、アンワインド セグエは中止されます。
アンワインド セグエを開始したビュー コントローラーから始まる検索順序は次のとおりです。
レスポンダ チェーンの次のビュー コントローラに
viewControllerForUnwindSegueAction:fromViewController:withSender:
メッセージが送信されます。モーダルに表示されるビュー コントローラの場合、これは を呼び出したビュー コントローラになりますpresentViewController:animated:completion:
。それ以外の場合は、parentViewController
.childViewControllers
デフォルトの実装では、アンワインド アクションを処理するビュー コントローラーをレシーバーの配列で検索します。レシーバーの子ビュー コントローラーのいずれもアンワインド アクションを処理しない場合、レシーバーはアンワインド アクションを処理するかどうかを確認し、処理する場合は self を返します。どちらの場合も、このcanPerformUnwindSegueAction:fromViewController:withSender:
メソッドを使用して、特定のビュー コントローラーがアンワインド アクションを処理する必要があるかどうかを判断します。
viewControllerForUnwindSegueAction:fromViewController:withSender:
ステップ 1 でView Controller が返されない場合、レスポンダー チェーン内の次の View Controller から検索が繰り返されます。
(2 番目の点を強調していることに注意してください。)
だから、私が見る限り、私がやっていることは、どういうわけか、うまくいくはずです. アンワインド セグエは、レスポンダー チェーンを、提示されたビュー コントローラーからUIPopoverController
出て、それを提示しているものに出入りし、チェーンを上って、最終的にアンワインド ハンドラーを見つけます。
しかし、それは機能していません。アイデアはありますか?