self
はUIWindow
ですが、現在どのようにvisibleViewControllerを取得できますか?UIWindowを使用してvisibleViewControllerを取得しますか?
0
A
答えて
1
、IN swift3:
func getVisibleViewController(_ rootViewController: UIViewController?) -> UIViewController? {
var rootVC = rootViewController
if rootVC == nil {
rootVC = UIApplication.shared.keyWindow?.rootViewController
}
if rootVC?.presentedViewController == nil {
return rootVC
}
if let presented = rootVC?.presentedViewController {
if presented.isKind(of: UINavigationController.self) {
let navigationController = presented as! UINavigationController
return navigationController.viewControllers.last!
}
if presented.isKind(of: UITabBarController.self) {
let tabBarController = presented as! UITabBarController
return tabBarController.selectedViewController!
}
return getVisibleViewController(presented)
}
return nil
}
-1
INORDERは、子ビューコントローラを追加した場合、階層内の一番上のビューコントローラへの参照は、次のコード
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController)
{
topController = topController.presentedViewController;
}
return topController;
0
を試す取得する:これはUIViewControllers
の配列を返す
let viewControllersVisible = self.rootViewController?.childViewControllers.filter({ $0.isVisible && $0.view.window })
をビュー階層に追加された場合、ユーザーが実際にそのView Controllerを見ることができるかどうかは、階層に依存します。
let viewControllerVisible = self.rootViewController?.presentedViewController
0
あなたはこのanswerをチェックアウトする必要があります:あなたはモーダルだけのビューコントローラを提示した場合
。その要点は、ウィンドウの.rootViewController
で始まることです。 .rootViewController
としてUINavigationController
を使用して(私自身のコードでは、私は()AppDelegate
でこれを使用します。
if let nvc = self.window?.rootViewController as? UINavigationController {
if let mvc = nvc.topViewController as? MasterViewController {
// ... do something
} else if let dvc = nvc.topViewController as? DetailViewController {
// ... do something
}
}
(注)マスター・ディテール・アプリケーションのデフォルトのテンプレートを使用している場合、あなたはSplitViewController
を検討する必要があることこれは、自分自身を介在が、それは定型的なコードから合理的に明らかにする必要があります。
-1
あなたは、ウィンドウ上の最上位のビューはこれにしようとしたい場合は、ビューを取得します。
[[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
関連する問題
- 1. SDKを使用してPodioアイテムをデータベースから取得し、PodioからIDを使用して取得する
- 2. javascriptを使用してカスタムヘッダーを取得しますか?
- 3. ConfiguratonBuilderを使用してホスティング環境を取得しますか?
- 4. POSTリクエストを使用してコレクションを取得しますか?
- 5. jqueryを使用してイメージリンクの 'src'を取得しますか?
- 6. jQueryを使用してURLの#anchorを取得しますか?
- 7. C#を使用して電子メールを取得しますか?
- 8. Oauthトークンを使用してGoogleアナリティクスデータを取得しますか?
- 9. AngularJS:AJAXを使用してサーバーからjsonを取得します
- 10. C#を使用してボタンのハンドルを取得しますか?
- 11. playframework @repeatを使用してインデックスを取得しますか?
- 12. JavaScriptを使用して@ Html.HiddenFor VALUEを取得しますか?
- 13. コンテンツプロパティを使用してfaviconを取得しますか?
- 14. リフレクション(Type.GetProperties)を使用してDependencyPropertiesを取得しますか?
- 15. NSDateを使用してCoredataからオブジェクトを取得します
- 16. TypoScriptを使用してウェブサイト名を取得しますか?
- 17. Android:Textview.SetText(characterSequence)を使用して[OBJ]を取得しています
- 18. メンバーシップユーザーIDを使用してユーザープロファイルを取得できますか?
- 19. cURLを使用してhtmlテーブルを取得できますか?
- 20. S3メタデータリクエストを使用してETagを取得できますか?
- 21. schtasks/queryを使用してLastRunTimeを取得できますか?
- 22. ノードを使用してAzure App Settingsをオブジェクトとして取得しますか?
- 23. ajaxを使用してフォームからデータを取得していますか?
- 24. IDを使用してLDAPアクティブディレクトリからデータを取得していますか?
- 25. ファイルからJSを使用してURLを取得していますか?
- 26. Jsoupを使用してウェブサイトからデータを取得していますか?
- 27. Java - Jsoupを使用してウェブサイトからデータを取得していますか?
- 28. fetchcontrollerを使用してtableviewセルからオブジェクトを取得していますか?
- 29. Pysnmpを使用してSNMPを使用してプリンタステータスを取得
- 30. フォトフレームワークを使用してフォトライブラリからすべてのイメージを取得します
あなたはUINavigationControllerを使用していますか? –