I am loading a splash screen when my app starts. Then I want to load a TabBarController and it\'s ViewControllers. However, my TabBarController window does not scale to the
I've just completed pretty much the same and ran into the same problems but eventually I got it working.
Create a View Controller class in Xcode called Test1ViewController
and add the following:
@interface Test1ViewController : UIViewController {
IBOutlet UITabBarController *tbc;
}
@property (nonatomic,retain) IBOutlet UITabBarController *tbc;
@end
Create a View XIB called Test1View
Add a TabBarViewController
to the XIB
Set the File's Owner in the XIB to be the Test1ViewController
.
Connect the tbc
IBOutlet in the File's Owner to the Tab Bar Controller in the XIB.
Connect the view
IBOutlet in the File's Owner to the View in the XIB.
In your SplashViewController.h add the property
Test1ViewController *tabBarViewController;
Synthesize the tabBarViewController
in your SplashViewController.m
.
Replace your TabBarController
creation code in your loadView
method in SplashViewController
with the following:
tabBarViewController = [[Test1ViewController alloc] initWithNibName:
@"Test1View" bundle:[NSBundle mainBundle]];
tabBarViewController.view.alpha = 0.0;
[self.view addSubview:[tabBarViewController view]];
Here's the bit that was missing for me. In Test1ViewController.m
, you need to add the following line to the viewDidLoad
method:
self.view = tbc.view;
Finally, I also had to change the finishedFading
method in SplashViewController.m
to set the alpha to 1.0 on the tabBarViewController
view.
-(void) finishedFading
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
self.view.alpha = 1.0;
tabBarViewController.view.alpha = 1.0;
[UIView commitAnimations];
[splashImageView removeFromSuperview];
}
I hope this helps.
I finally found someting that works. Instead of:
tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
or
tabBarController.view.bounds = [[self view] bounds];
Because I couldn't find and automatic or named settings for this size, I had to create my own rectangle that is the size of the screen minus the statusBar.
tabBarController.view.frame = CGRectMake(0,0,320,460);