我有一个带有7个自定义ViewControllers的TabBarController,我想要做的是启动时使用TabBarController加载其数组中的第一个ViewController以及其他一个选项卡中的ViewController。
据我所知,ViewController的viewDidLoad方法仅在首次选中时才调用该选项卡。有没有办法强制TabBarController调用ViewController viewDidLoad方法,即使它不活动?
THX
答案 0 :(得分:0)
只需引用ViewController视图:
[myViewController view]
如果myViewController的视图为nil,那么它将被加载。
请注意,即使此方法有效,您的应用也会受到视图加载/卸载机制的影响,该机制由内部运行循环逻辑而不是您的应用程序控制,而视图控制器“内部逻辑”应该初始化通过initWithNib:方法完全由您控制。但这只是一个建议,以避免奇怪的错误,无论如何提出的解决方案是有效的。
答案 1 :(得分:0)
这种技术看起来效果很好。我有一个应用程序,底部有一个UITabBarController,里面有5个按钮。当用户单击第3个按钮时,该视图的viewDidLoad需要5秒才能执行操作,因此我使用此技术使应用程序启动时调用viewDidLoad。我不想要显示第三个视图;只是要进行初始化,以便在点击时立即显示。
我必须将UITabBarController子类化为类似FoohBarController的东西,然后在它的viewDidLoad中我创建了一个后台线程:
{
// get a pointer to the 3rd item in the tab bar (0 based)
UINavigationController *navcon = [self.viewControllers objectAtIndex:2];
// get a pointer to the viewController I want to init
CalendarViewController *calendar = [navcon.viewControllers objectAtIndex:0];
// Just ask for the view. This will force the view to load and to initialize
UIView *v = calendar.view;
v = nil; // to remove a compiler warning
}