2014-01-21 2 views
0

Я создаю несколько приложений для раскадровки. В соответствии с требованием я использую разные рассказы в разных случаях. для его поддержки всех устройств, я должен написать свой код так:Как иметь такое же имя раскадровки для iPhone и iPad в универсальном приложении multiStoryBoard?

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"blah_iPhone" bundle:nil]; 
    self.window.rootViewController = [storyboard instantiateInitialViewController]; 
} 
else 
{   
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"blah_iPad" bundle:nil]; 
    self.window.rootViewController = [storyboard instantiateInitialViewController]; 
} 
[self.window makeKeyAndVisible]; 

Я попытался с помощью тильды (~) также, называя раскадровку как blah~iphone & blah~ipad но бросает ошибку, как это:

2014-01-21 17:05:44.941 test[2709:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/3D8EC72E-D20D-4C60-A413-E8040A455262/blah.app> (loaded)' with name 'UIViewController-aYh-JW-qLA' and directory 'blah.storyboardc'' 
*** First throw call stack: 
(0x2d4edf4b 0x37c846af 0x2d4ede8d 0x2ffbfe39 0x3010c03d 0x40ff5 0x2fcd12ff 0x2fcd0d4f 0x2fccb353 0x2fc6641f 0x2fc65721 0x2fccab3d 0x3211670d 0x321162f7 0x2d4b89df 0x2d4b897b 0x2d4b714f 0x2d421c27 0x2d421a0b 0x2fcc9dd9 0x2fcc5049 0x4134d 0x3818cab7) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Любая идея ??

+0

Похоже есть опечатка здесь 'blah.storyboardc' Обратите внимание на дополнительные' c' в конце. – Desdenova

+0

также попробуйте изменить то же самое в файле plist – Bonnie

+0

@Desdenova .. Я так и думал, но его нет .. это компилятор сгенерировал ошибку –

ответ

0

Возможно, мне что-то не хватает, но я не понимаю, почему вы управляете окном вручную, если используете файлы раскадровки.

Я думаю, что вы добавляете универсальную поддержку уже существующего проекта. Потому что, если вы создадите новое универсальное приложение, все будет так же, как вам нужно.

Тебе нужен метод application:didFinishLaunchingWithOptions: в делегат своего приложения, как это:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    return YES; 
} 

И ваши целевые установки должны выглядеть следующим образом, обратите внимание на переключатель iPhone/IPad и выбрать различные раскадровки для каждого устройства.

enter image description here

+0

Да, точно .. Вам не хватает много чего. То, что я прошу здесь, - это то, как иметь одно и то же имя для обеих раскадровки :( –

+0

Да, подумал ... blah_iPhone, blah_iPad - это лучшее, что вы можете сделать. – Desdenova

+0

Нет .. есть понятие с тильдой (~). просто нужно работать для этого. –

Смежные вопросы