[解決済み】UIViewControllerの最上位機種を取得する。
2022-04-17 21:53:30
質問
一番上の
UIViewController
にアクセスしないと
UINavigationController
. 今のところ、こんな感じです。
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(vc, animated: true, completion: nil)
しかし、これでは何もできないようです。その
keyWindow
と
rootViewController
もnilでない値のようなので、オプションの連鎖は問題ないでしょう。
注意 このようなことをするのは良くないことです。MVCパターンを壊してしまいます。
解決方法は?
presentViewController
はビューコントローラを表示します。これはビューコントローラを返すものではありません。もし
UINavigationController
を探しているのでしょう。
presentedViewController
で、ルートから始めて、提示されたビューを繰り返し見ていく必要があります。
if var topController = UIApplication.sharedApplication().keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
// topController should now be your topmost view controller
}
Swift 3 以上用。
if var topController = UIApplication.shared.keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
// topController should now be your topmost view controller
}
iOS 13+の場合
let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
if var topController = keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
// topController should now be your topmost view controller
}
関連
-
[解決済み】Thread 1: signal SIGABRTエラーを解決するには?[クローズド]
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] 文字列の長さを取得する
-
[解決済み] なぜクラスではなくストラクチャーを選ぶのか?
-
[解決済み】iOSのUIViewControllerのライフサイクルを理解するために
-
[解決済み】Swiftのオプション値とは何ですか?
-
[解決済み】コンパイラーエラー。Objective-C のセレクタを持つメソッドは、同じ Objective-C セレクタを持つ以前の宣言と競合しています。
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
-
[解決済み] UIViewからUIViewControllerへ?
-
[解決済み] UIViewControllerの上にclearColor UIViewControllerを表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スウィフト 2: !, ?-" オプション型「...」の値がアンラップされていない"
-
[解決済み] このコンテキストで型検索を行う場合、「メソッド」は曖昧である、Alamofireのエラー
-
[解決済み] Swiftで文字列が別の文字列を含んでいるかどうかを確認するには?
-
[解決済み] swiftの"? "の意味は何ですか?[重複している]。
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み】解決方法。iOS 13.0で'keyWindow'が非推奨になりました。
-
[解決済み】Swiftの構造体のために、メンバーごとの初期化子をデフォルトで公開するにはどうすればよいですか?
-
[解決済み】Swiftの列挙型と関連する値の等質性をテストする方法
-
[解決済み】iOS8でSwiftを使用して特定のViewControllerのステータスバーの色を変更する。
-
[解決済み】swiftでDoubleを最も近いIntに丸めるには?