2

Я создаю приложение Universal iOS. У меня есть несколько кнопок на главном экране, которые загружают другие контроллеры представлений. Я создал «Main.storyboard» и «iPad storyboard.storyboard». Я сделал два вида в «главном» и «iPad». На «Main» я установил идентификаторы раскадровки на «FirstCar» и «FirstPlayer». На «iPad» я установил их в «FirstCarPad» и FirstPlayerPad ». В общих настройках я назначил приложение Universal и установил «Main» в качестве раскадровки для iPhone и iPad для iPad.загрузить различные раскадровки в универсальное приложение с помощью кнопки xcode

Я использую следующий код для запуска контроллеров представления в раскадровках из исходного представления.

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    int height = [UIScreen mainScreen].bounds.size.height; 

    if (height == 568.0) { 

     UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
     UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"FirstCar"]; 

     [self presentViewController:vc animated:YES completion:NULL];  } 

} 
else if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){ 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"ipad storyboard" bundle:nil]; 
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"FirstCarPad"]; 

    [self presentViewController:vc animated:YES completion:NULL]; } 

Когда я нажимаю на первую кнопку, которая обращается к «FirstCar» и «FirstCarPad» ViewControllers все работает нормально, но Когда я нажимаю на вторую кнопку, которая обращается к «FirstPlayer» и «FirstPlayerPad» viewControllers приложение аварии с этим

согласующего приложением из-за неперехваченное исключение «NSInvalidArgumentException», причина: «Раскадровка() не содержит контроллер с идентификатором вида„FirstPlayerPad“»

, но у меня есть видКонтроллеры настроены точно так же, как и раскадровка.

Я собираюсь вырвать волосы.

Может кто-нибудь помочь мне.

+0

Если вы можете настроить таргетинг на iOS 8+, рассмотрите возможность использования одной раскадровки и классов размеров. – dasdom

+0

Я могу получить доступ к размеру iOS 8+, но когда я использую автомат, мое приложение работает неправильно. Я использую диспетчер движения, и он продолжает перезагружать вещи, чтобы при перемещении объекта он возвращал его в исходное положение. Я бы не подумал, что это должно быть так сложно. – user1114881

ответ

0

Чтобы это сработало, я дублировал Main.storyboard в поиске, переименовав его в Main-iPad.storyboard, а затем добавил его в проект. Затем я щелкнул правой кнопкой мыши по новой раскадровке и выбрал Open Source. Это показало раскадровку как код, и я изменил targetRuntime = "iOS.CocoaTouch" на targetRuntime = "iOS.CocoaTouch.iPad". Затем я снова щелкнул его, но выбрал Open Storyboard. С настройками, установленными на «Universal» и Main-iPad.storyboard, выбранными в качестве раскадровки iPad, все работает отлично. Мне просто нужно изменить размер и переместить элементы в каждом виде iPad. Много времени, но стоит того. Надеюсь, это может быть полезно кому угодно. Желаю, когда вы переконфигурировали iPad с iPhone, он изменил размер и переместил элементы в представлениях, но хорошо.

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