Вопросы о Универсальном приложении в Xcode 4 - PullRequest
2 голосов
/ 22 ноября 2011

Я пытаюсь создать универсальное приложение с Xcode 4. Однако, оно кажется немного отличным от предыдущих версий.

В моем проекте используется шаблон приложения View Based. Моя проблема в том, что я добавил подкласс UIViewController, который имеет один nib-файл для iPad. Как создать другой файл пера с тем же классом, предназначенным для iPhone? Кроме того, как я могу гарантировать, что правильный файл пера загружен для соответствующей платформы?

отредактировано: вот мой код:

- (IBAction)BookView {

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController" bundle:nil];
        [self presentModalViewController:viewController animated:YES];

    } else {

        BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController_iPad" bundle:nil];
        [self presentModalViewController:viewController animated:YES];
    }
}

Ответы [ 2 ]

6 голосов
/ 22 ноября 2011

Шаг 1: Создать для iPhone:

  • Новый файл / ios / cocoa touch / подкласс UIViewController
  • снять отметку Targeted for iPad
  • проверить с помощью XIB

На этом шаге будут созданы файлы .m .h и .xib с одинаковыми именами, например: CustomView

Шаг 2: Создать новыйXIB для iPad:

  • Новый файл / ios / пользовательский интерфейс / семейство устройств просмотра iPad
  • для удобства выберите то же имя с суффиксом _iPad (например, CustomView_iPad)
  • в этом xib перейдите к владельцу файла, на вкладках инспектора выберите инспектор идентификации, пользовательский класс и выберите то же имя класса, созданного на шаге 1.
  • Подключите IBOutlets.

В вашем коде используйте что-то вроде этого:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    CustomView *viewController = [[CustomView alloc] initWithNibName:@"CustomView" bundle:nil];
} else {
    CustomView *viewController = [[CustomView alloc] initWithNibName:@"CustomView_iPad" bundle:nil];
}

Удачи!

3 голосов
/ 18 сентября 2012

Назовите свой xib-файл для iPad BookViewController ~ ipad.xib и iPhone one BookViewController ~ iphone.xib . Затем загрузите файл пера как обычно:

BookViewController *viewController = [[BookViewController alloc] initWithNibName:@"BookViewController" bundle:nil];
[self presentModalViewController:viewController animated:YES];

Когда приложение запускается на устройстве iPad, автоматически загружается ~ ipad xib. Если приложение работает на iPhone, автоматически загружается ~ iphone xib.

Обратите внимание, что суффиксы ~ ipad и ~ iphone чувствительны к регистру. Если вы назовете его, например, ~ iPad, вы получите исключение во время выполнения, что nib-файл не найден.

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