UIMoreListController
の子であるView Controllerを取得するための正当なAPIがあるかどうか不思議ですか? (UIMoreListControllerはUIMoreNavigationControllerのビュースタックの上部の子である。UIMoreNavigationControllerはUITabBarController
のmoreNavigationController
プロパティによってオブジェクト指し示される。)UIMoreListController(プライベートフレームワーククラス)の子ビューコントローラを取得する方法は?
言い換えれば、私はUITabBarControllerを有し、私は配列を設定する場合その上に6つのビュー・コントローラ、ビュー階層は、実際に(それが実際にビューの階層だ、コントローラを表示していないが、これらの識別子を使用すると、より多くの意味を成して)次のようになります。これを行うには
+ UITabBarController <-- has five tabs
|--- view controller <-- these are my own view controllers
|--- view controller
|--- view controller
|--- view controller
|--+ UIMoreNavigationController <-- root view controller of fifth tab
|--+ UIMoreListController <-- table-based view shown on fifth tab
|--- view controller <-- these are my own view controllers
|--- view controller
一つの方法は、単純にありますUITabBarControllerのviewControllers
プロパティからView Controllerを取得し、5以上があるかどうかを確認し、ret 5より大きい場合、すべてのView Controllerをインデックス5からN - 1
に変更します(5未満の場合、View ControllerはUIMoreNavigationControllerの子になりません)。
ただし、ハードコーディングを避けたいのですがmoreNavigationController
の残りのコントローラをリストする前にUITabBarControllerが表示するビューコントローラの数についての仮定。 Appleは将来的にこの数字を変更する可能性があります。しかし、UITabBarControllerまたはこれらの子にアクセスするためのUINavigationController上でAPIを見つけることはできません。また、UIMoreNavigationControllerはパブリッククラスではないため、そのクラスに公開されているメソッドに依存することはできません。
私は唯一の5つのタブがshowableているiPhone、上tabBarController.tabBar.items.countの== 7を取得します。私はこれがうまくいくとは思わない。 –
タブバーにはn個のビューコントローラがあります。 7人は大丈夫です。そのタブバー上のビューコントローラを数えれば、おそらく8になります。 –
答えは「正しい」とマークされていません。 – erikprice