問題タブ [poptoviewcontroller]
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 - popToViewController を呼び出す適切な方法 - iOS
popToViewController に関して、チーム メンバーと議論しています。
私にとって最善のアプローチは 、特定のViewControllerにポップできますか?
しかし彼は、viewController の静的インスタンスを作成してから呼び出す必要があると考えています。
currentViewController とは関係のない IVPreviousViewController でパブリック メソッドを作成しているため、このアプローチを強く推奨します。このようなメソッド公開は常に避けるべきです。
誰かが最善のアプローチについて確固たる理由を教えてくれますか?
アップデート:
IVPreviousViewController.h
IVPreviousViewController.m
このアプローチの理由 - viewController の特定のユース ケースでは、IVPreviousViewController に popback する必要があります。
swift - popToRootViewController が呼び出されると Swift アプリがクラッシュする - Exc Bad Access
ナビゲーション スタックに約 4 つのビュー コントローラがあると、Swift アプリがクラッシュし、4 番目に を呼び出しますpopToRootViewController
。ポップするので、UINavigationController
が存在することはわかっていますが、 以外のエラーなしでアプリがクラッシュしますExc Bad Access
。またUINavigationController
、ルート ビュー コントローラーにポップする代わりに閉じるとクラッシュします。
注: これは、テスト デバイスでアプリを実行している場合にのみ発生します。テスト デバイスが Xcode に接続されているときに実行すると、クラッシュすることはありません。
もちろん、これは私の最終的なView Controllerの唯一のコードですviewDidLoad
。コード:
@IBAction func closeBtnPressed(sender: AnyObject) {
//dismissViewControllerAnimated(true, completion: nil)
self.navigationController?.popToRootViewControllerAnimated(true)
}
何か案は?ありがとう!
ios - popToViewController の後に viewWillAppear が呼び出されない
少し問題があります。A->B->C (-> はモーダル セグエ) ビュー A はルート ビュー コントローラーであり、C から A に戻る必要があります。 B からメソッド popToViewController を呼び出し、A は viewWillAppear を実行します。popToViewController を C から (A に) 呼び出すと、A の viewWillAppear は呼び出されません。どうすればこれを解決できますか? (Xcode7 と iOS 9 で動作)
ビューコントローラー A
ビューコントローラー B
ビューコントローラー C
ios - popViewControllerAnimated(true) を使用して UITableView から移動するときの UISearchController の警告を修正する方法
searchController は viewDidLoad()
、TableViewController で として宣言されていsearchController = UISearchController(searchResultsController: nil)
ます。ユーザーが現在のテーブル ビューで行を選択すると、 を使用して前のビュー コントローラーに移動しself.navigationController?.popViewControllerAnimated(true)
ます。これが発生するたびに、警告が表示されます-
「割り当て解除中にView Controllerのビューを読み込もうとすることは許可されておらず、未定義の動作が発生する可能性があります」
これを避けるために、popViewControllerAnimated(true)
ナビゲーションコントローラーを呼び出す前に、検索コントローラーをスーパービューから削除しています。
検索がアクティブで行が選択されている場合、同じ警告は表示されません。最初に検索コントローラーを閉じてから前のコントローラーに飛び出すため、この場合は正常に機能する可能性があります。しかし、検索がアクティブかどうかに関係なく、すべての場合に検索コントローラーを閉じると、役に立ちません。
これがコードです。
これがelseブロックで上記のように正しいアプローチであるかどうか、または内で同じことを行う必要があるかどうかを理解したい:-
viewWillDisappear/viewDidDisappear
deinit{ if let superView = searchController.view.superview { superView.removeFromSuperview() } }
どれが正しいことですか?