Я новичок в разработке пользовательского интерфейса 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-файлов или раскадровки это необходимо удалить. Я удалил его, и все работает! :)
AlternateViewController_iPad.xib не отображается .. как вы можете это подтвердить? – Shubhank
Экран полностью черный. – yoninja
ваш AlternateViewController_iPad.xib может иметь черный вид по умолчанию? – Shubhank