Как загрузить разные Xibs в Iphone и Ipad? - PullRequest
2 голосов
/ 11 января 2012

Я хочу в определенный момент программы загрузить разные xib для iphone и для ipad, но хочу повторно использовать большую часть кода.как мне этого добиться?

Ответы [ 2 ]

6 голосов
/ 11 января 2012

Добавить ~ipad или ~iphone в конец имени файла.Например, SomeViewController~ipad.xib или SomeViewController~iphone.xib.

См. iOS поддерживает специфичные для устройства ресурсы .

1 голос
/ 11 января 2012

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

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

  if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
      MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPhone" bundle:nil];
      self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
      self.window.rootViewController = self.navigationController;
  } else { // iPad
      MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
      UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

      PSGameViewController *detailViewController = [[PSGameViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
      UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

      self.splitViewController = [[UISplitViewController alloc] init];
      self.splitViewController.delegate = detailViewController;
      self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];

      self.window.rootViewController = self.splitViewController;
  }

  [self.window makeKeyAndVisible];
  return YES;
}

или от tableView:didSelectRowAtIndexPath:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
  if (self.detailViewController == nil) {
      self.detailViewController = [[PSGameViewController alloc] initWithNibName:@"PSGameViewController_iPhone" bundle:nil];
  }

  self.detailViewController.model = selectedModel;
  [self.navigationController pushViewController:self.detailViewController animated:YES];
  self.pushedIndexPath = indexPath;


} else { // iPad

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