XCode 4 - универсальное приложение - вид не изменяется при использовании контроллера панели вкладок - PullRequest
1 голос
/ 21 сентября 2011

Я все еще новичок в этом, поэтому потерпите меня:

Я создал новое основанное на 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-файлы.

1 Ответ

0 голосов
/ 21 сентября 2011

Они должны иметь имена: ~iphone и ~ipad, а не: _iPhone и _IPad.Причиной этого является то, что в этом формате ссылка говорит, что это так.

Также обратите внимание, что симулятор НЕ чувствителен к регистру, тогда как устройство iOS, поэтому убедитесь, что перо отформатировано, как указано выше, иначе оно будет работать только на симуляторе.

Надеюсь, что поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...