Я все еще новичок в этом, поэтому потерпите меня:
Я создал новое основанное на Windows приложение в XCode 4, которое оказывается универсальным приложением.После этого я программно создал TabBarController со связанными контроллерами представления (просто базовые представления с 1-2 метками, чтобы помочь мне идентифицировать каждую версию (iPad, iPhone).
Когда я запускаю приложение и переключаю вкладки,Метод viewDidLoad запускается, заголовок отображается правильно, но визуальное представление не переключается. Он остается в файле .xib MainWindow (устройство) по умолчанию для каждой версии. Что мне здесь не хватает?
добавление вкладок программным способом:
- (void) addTabs
{
//set up a local nav controller which we will reuse for each view controller
UINavigationController *localNavigationController;
//create tab bar controller and array to hold the view controllers
tabBarController = [[UITabBarController alloc] init];
NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:2];
//setup the first view controller (Root view controller)
HomeViewController *myViewController;
myViewController = [[HomeViewController alloc] init];
//create the nav controller and add the root view controller as its first view
localNavigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];
// add the new nav controller (with the root view inside of it)
// to the array of controllers
[localControllersArray addObject:localNavigationController];
//release
[localNavigationController release];
[myViewController release];
//setup the second view controller
MapViewController *secondViewController;
secondViewController = [[MapViewController alloc] initWithTabBar];
localNavigationController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
[localControllersArray addObject:localNavigationController];
[localNavigationController release];
[secondViewController release];
tabBarController.viewControllers = localControllersArray;
[localControllersArray release];
}
и MapViewController.h является базовым - там действительно ничего нет:
#import "MapViewController.h"
@implementation MapViewController
- (id)initWithTabBar {
if ([self init]) {
//this is the label of the tab button itself
self.title = @"Map";
//image goes here
//self.tabBarItem.image = [UIImage imageNamed:@"name_gray.png"];
//set the long name show in the Navigation bar at the top
self.navigationItem.title = @"Map View";
}
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Am I loading?");
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"Testing");
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
Теперь нет файла MapViewController.xib, кроме MapViewController_iPhone.xib и MapViewController_iPad.XIB-файлы.