Как сделать версию приложения для iPhone и iPad? - PullRequest
11 голосов
/ 05 февраля 2011

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

if ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)]) 
    {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
        {
            device = @"iPad";
        }
        else 
        {
            device = @"iPhone";
        }

    }

Но в MainWindow.xib это говорит, что представление загружено из контроллера представления для iPhone. Могу ли я сделать это динамическим на основе устройства? То есть я хочу показать с самого начала приложения различные перья в зависимости от устройства. Спасибо.

Ответы [ 4 ]

27 голосов
/ 07 марта 2012

На самом деле, Apple делает все это автоматически, просто назовите ваши файлы NIB:

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

и загрузите ваш контроллер представления с наименьшим количеством кода:

[[MyViewController alloc] initWithNibName:nil bundle:nil]; // Apple will take care of everything
6 голосов
/ 05 февраля 2011

Вы можете сделать это аналогичным образом:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenuiPad" bundle:nil]; 
}else{  
    mainMenu = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle:nil]; 
}
5 голосов
/ 05 февраля 2011

Для создания универсального приложения,

1 набор целевых семейств во вкладке «Построение информации» для приложений под iPhone / iPad.

2 - Удалить окно из главного окна.

3 - Добавьте два xib один для iPhone и один для iPad (выбрав iPad xib).

4 - сделать класс appDelegate в качестве файла контроллера для этих xib.

5- Добавьте окно на эти xibs и просмотрите контроллер или навигационный контроллер, и IB Inspector установит здесь имя загрузки nib и файл контроллера, который является вашим первым видом.

6 - Затем создайте XIB для iPad и iPhone, который имеет табличное представление или другие элементы управления.

7-Создайте один файл контроллера или другой файл контроллера для другого устройства, для этого вам необходимо проверить устройство по этому, если еще условие

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

8 - Теперь вам нужно загрузить xib в классе appDelegate в методе didFinishL -

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

   // load your nib for iPad here which having view controler or navigation controller as well window.
}else{  
    //load nib for iPhone. 
}
0 голосов
/ 05 февраля 2011

Попробуйте это в вашем Info.plist:
Основное имя основного файла пера [NSMainNibFile]: MainWindow_iPhone
Основное имя основного файла пера (iPad) [NSMainNibFile~ipad]: MainWindow_iPad

Надеюсь, это вам поможет.

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