Приложение iPhone не загружается в iPad, но загружается в симулятор iPhone - PullRequest
0 голосов
/ 24 сентября 2010

Я моделирую приложение «только для iPhone» в iPad. Двоичный файл хорошо симулируется в симуляторе iPhone, но при попытке симуляции в iPad появляется исходное фоновое изображение, но затем экран просто становится черным. (Xcode v4.1, SDK 4.1)

Приложение имеет только одно представление, которое управляется одним пользовательским UIViewController. (SoloViewController) Единственный вид, управляемый SoloViewController, содержится в «отдельном» пере, называемом «mainview.xib».

Я инициализирую SoloViewController в моем AppDelegate следующим образом:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    SoloViewController *vc = [[SoloViewController alloc] initWithNibName:@"mainview" bundle:[NSBundle mainBundle]];
    self.soloViewController=vc;
    [vc release];

    [window addSubview:[soloViewController view]]; 
    [window makeKeyAndVisible]; 
}

Мой файл Info.plist имеет «Основное имя файла основного пера», установленное на «MainWindow», которое, как я считаю, по умолчанию Xcode дает вам при первом создании проекта на основе ViewController. Во всяком случае, я просто оставил это как есть. Тем не менее, при попытке симуляции в iPad, журнал говорит:

Failed to load NSMainNibFile MainWindow.

Симулятор iPhone и аппаратное обеспечение не имеют проблем с этим ...

Если я установил ключ «Основное имя файла пера» на «mainview», чтобы использовать файл xib для представления, я получу эту ошибку:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x7a01270> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'

Я дважды проверил xib в IB, и все выходы правильно определены и подключены к SoloViewController.h & SoloViewController.m. Что я тут не так делаю!?

Также - если я оставлю NSMainNibFile пустым, то на симуляторе iPhone появится черный экран. (нет ошибок в журнале)

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Как выясняется проект, в этом случае требуется файл MainWindow.xib.В моем случае я случайно удалил этот файл из исходного шаблона проекта и подумал, что он в порядке, так как он имитировался и работал нормально на оборудовании.(iPhone) Для файла MainWindow.xib требуется Владелец файла типа «UIApplication», Первый ответчик типа «UIResponder», Делегат приложения пользовательского типа, указывающий на делегата приложения.(имя будет меняться в зависимости от того, как вы назвали свой проект) Наконец, есть окно типа UIWindow.Все это настройки по умолчанию, за исключением App Delegate.

Как только я включил xib, сконфигурированный таким образом, приложение загружается, как и ожидалось, в симуляторах iPhone и iPad.(До сих пор не ясно, почему симулятор iPad по-разному относится к отсутствию файла MainWindow.xib)

0 голосов
/ 24 сентября 2010

Подобное поведение может произойти, когда вы ссылаетесь на константы в своем коде (или с помощью генерации кода IB), которые определены в iOS 4x или более поздней версии, в то время как iPad работает с 3.2x и ничего не знает об этих ключевых определениях.

Убедитесь, что у вашей цели для iOS Deployment Target установлено значение iOS 3.2, а для Base SDK - 4.1. Если вы изменили эти значения, выполните очистку перед перекомпиляцией. К сожалению, я не думаю, что вы увидите предупреждение компилятора в этом случае.

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

...