2014-10-16 2 views
3

вот мой didFinishLaunchingWithOptions:
В настоящее время мое приложение предназначено только для iPhone, но я хочу это в обоих (универсальных).Как проверить устройство ipad или iphone в appdelegate для xib?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    playerScreenViewController *playerScreen=[[playerScreenViewController alloc] initWithNibName:@"playerScreenViewController" bundle:nil]; 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:playerScreen]; 
    self.window.rootViewController = navigationController; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    self.window.backgroundColor = [UIColor grayColor]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

И я не знаю, как использовать это условие в AppDelegate:

if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 
    // iPad 
} else { 
    // iPhone 
} 

ответ

0

Простое решение для моего вопроса.
Поместите эти два метода в Класс помощника Здесь я использую «CommonUtils».

+(BOOL)isiPad 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
     return YES; 
    } 
    else 
    { 
     return NO; 
    } 
} 

+(NSString *)loadXIBBasedOnDevice:(NSString *)viewControllerName 
{ 
    NSString *strReturn = @""; 
    if([CommonUtils isiPad]) 
    { 
     strReturn = [NSString stringWithFormat:@"%@-iPad",viewControllerName]; 
    } 
    else 
    { 
     strReturn = viewControllerName; 
    } 
    NSLog(@"%@",strReturn); 
    return strReturn; 
} 

И Надень это метод ViewController в хотите ли вы проверяете .:

ViewController *viewController = [[ViewController alloc] initWithNibName:[CommonUtils loadXIBBasedOnDevice:@"ViewController"] bundle:nil]; 
ViewController.navigationController.navigationBarHidden=NO; 
[self.navigationController pushViewController:viewController animated:YES]; 
1

Как я могу видеть в коде, который вы используете для XibplayerScreenViewController. Теперь вам нужно создать Xib для iPad.

и поместите следующий код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

     playerScreenViewController *playerScreen; 
     if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { 
      // iPad 
      playerScreen=[[playerScreenViewController alloc] initWithNibName:@"playerScreenViewController_iPad" bundle:nil]; 

     } else { 
      // iPhone 
      playerScreen=[[playerScreenViewController alloc] initWithNibName:@"playerScreenViewController" bundle:nil]; 

     } 

     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:playerScreen]; 
     self.window.rootViewController = navigationController; 
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
     self.window.backgroundColor = [UIColor grayColor]; 
     [self.window makeKeyAndVisible]; 
     return YES; 
    } 

соблюдать эту линию

playerScreen=[[playerScreenViewController alloc] initWithNibName:@"playerScreenViewController_iPad" bundle:nil]; 

здесь вы должны пройти Xib имя для окружающей среды IPad.

0

Также возможно загрузить файл xib без проверки условия if для устройства.

Apple уже предоставляет эту функциональность. Вы должны просто указать имя файла xib в этом формате.

playerScreenViewController~iphone.xib // iPhone 
playerScreenViewController~ipad.xib // iPad 

И это утверждение автоматически принять правильное XIB на основе устройства:

playerScreenViewController *playerScreen=[[playerScreenViewController alloc] initWithNibName:@"playerScreenViewController" bundle:nil];