加载所有 TabBar 视图
我有一个标签栏控制器作为根视图控制器。我想预加载选项卡 [1,2,3] 的视图(选项卡 0 自动加载为第一个选项卡)。
我本质上希望 viewdidload 中的代码在用户点击选项卡之前运行。
谢谢
I have a tabbar controller as the root view controller. I would like to pre-load the views of tab [1,2,3] (tab 0 loads as the first tab automatically).
I essentially would like the code in viewdidload to run before the user taps on the tab.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
如果您将视图初始化代码移至 loadView 而不是 viewDidLoad 中,则只需调用 viewController.view 即可强制加载属于 UITabBarController 的每个 UIViewController。发生这种情况是因为 UIViewController 将在需要时通过 loadView 函数创建视图对象。
或者更简单地说
If you take your view initialization code and move it into loadView instead of viewDidLoad you can force each of the UIViewControllers that are part of your UITabBarController to be loaded by simply calling viewController.view. This happens because a UIViewController will create the view object via the loadView function when asked for it.
or more simply
在 iOS 8 中,我创建了一个名为 TSMainBarViewController 的 UITabViewController 子类。在 TSMainBarViewController 的函数
viewDidLoad
中,我刚刚添加了这样的代码:然后所有的 viewController(UINavigationController 的根 viewController)都会加载。我所有的 viewController 都是在 StoryBoard 中创建的。不要在 UIViewController 中实现 loadView 函数。
来自 EligyD 的 Swift 3 代码:
In iOS 8, I created a subclass of UITabViewController named TSMainBarViewController. In the function
viewDidLoad
of TSMainBarViewController, I just added this code:Then all the viewControllers (root viewController of UINavigationController) will load . All my viewControllers are created in the StoryBoard. Do not implement the function
loadView
in the UIViewController.Swift 3 code from EligyD:
要处理可能有或没有导航控制器的选项卡控制器:
To handle tab controllers which might or might not have navigation controllers:
如果标签栏控制器下的所有视图控制器都嵌入了导航栏:
Swift 3
User Panda 的解决方案不适合我。
If your all view controllers under the tab bar controller have a navigation bar embedded in them:
Swift 3
User Panda's solution didn't work for me.
如果你的视图之前有 UINavigationController
if you have UINavigationController before your views
Swift 3:
在 UITabBarController 的
viewDidLoad()
中Swift 3:
In
viewDidLoad()
of your UITabBarController斯威夫特5:
Swift 5:
斯威夫特等效...
Swift equivalent...