2012-03-15 2 views
0

Я новичок в разработке пользовательского интерфейса iOS. Я пытаюсь создать универсальное приложение для iOS. В Xcode 4.3, если проект создан с использованием шаблона приложения Single View Application и универсального семейства устройств, эти файлы создаются: AppDelegate, ViewController, ViewController_iPhone.xib и ViewController_iPad.xib. Они меня путают, потому что в предыдущих версиях Xcode также создаются два подкласса AppDelegate; Один для iPhone и другой для iPad. Во всяком случае, например, у меня есть TestAppDelegate, TestViewController, TestViewController_iPhone.xib и TestViewController_iPad.xib. Если я запустил приложение на симуляторе iPad, отобразится TestViewController_iPad.xib.

Затем я добавил AlternateViewController. Впоследствии я создал AlternateViewController_iPad.xib. Я выбрал этот xib-файл и установил пользовательский класс владельца файла в AlternateViewController и установил представление Outlet в представление под объектами. Я хотел бы видеть, если я могу отобразить AlternateViewController_iPad так в TestAppDelegate я это сделал:Невозможно отобразить другие виды в iOS

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    if(NO){ 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      self.viewController = [[[TestViewController alloc] initWithNibName:@"TestViewController_iPhone" bundle:nil] autorelease]; 
     } else { 
      self.viewController = [[[TestViewController alloc] initWithNibName:@"TestViewController_iPad" bundle:nil] autorelease]; 
     } 
     self.window.rootViewController = self.viewController; 
    } 
    else{ 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      self.alternateScreenController = [[[AlternateViewController alloc] initWithNibName:@"AlternateViewController_iPhone" bundle:nil] autorelease]; 
     } else { 
      self.alternateScreenController = [[[AlternateViewController alloc] initWithNibName:@"AlternateViewController_iPad" bundle:nil] autorelease]; 
     } 
     self.window.rootViewController = self.alternateScreenController; 
    } 

    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Я бегу код, но, к сожалению, AlternateViewController_iPad.xib не отображается.



Я поставил точку останова на 'return YES;' часть и, в области отладки, я вижу, что переменная self.window.rootViewController.nibBundle установлена ​​в ноль. Однако, если используется TestViewController_iPad, переменная self.window.rootViewController.nibBundle is не ноль.



Я удалил AlternateViewController и AlternateViewController_iPad.xib. Затем я повторно создал их, но теперь, в раскрывающемся списке «Выбрать параметры для вашего нового файла:», я возвращаю класс в AlternateViewController, «Подкласс» в UIViewController и проверял «целевые для iPad» и «С XIB для пользователя интерфейс." Изменен TestAppDelegate для этих новых файлов, а затем повторно запустите приложение. Любопытно, что теперь отображается AlternateViewController (iPad), а переменная self.window.rootViewController.nibBundle - не ноль.



Теперь, что мне здесь не хватает? Где ошибка? Это с моим кодом или с Xcode 4.3 ???



Дополнительный вопрос:
Если отображается первым TestViewController_iPad и есть кнопка там при нажатии покажет AlternateViewController_iPad, как я, собственно, собираюсь сделать это?


ОБНОВЛЕНИЕ Я выяснил, что проблема. Случается, что при создании ViewController без файла xib метод loadView добавляется в новый ViewController. Насколько я понимаю, этот метод используется, когда представления создаются программно/вручную. При использовании xib-файлов или раскадровки это необходимо удалить. Я удалил его, и все работает! :)

+0

AlternateViewController_iPad.xib не отображается .. как вы можете это подтвердить? – Shubhank

+0

Экран полностью черный. – yoninja

+0

ваш AlternateViewController_iPad.xib может иметь черный вид по умолчанию? – Shubhank

ответ

0

Я выяснил проблему. Случается, что при создании ViewController без файла xib метод loadView добавляется в новый ViewController. Насколько я понимаю, этот метод используется, когда представления создаются программно/вручную. При использовании xib-файлов или раскадровки это необходимо удалить. Я удалил его, и все работает!:)

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