我是iOS开发的UI部分的新手。我正在尝试创建一个通用的iOS应用程序。在Xcode 4.3中,如果使用Single View Application模板和Universal设备系列创建项目,则会创建以下文件: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,并将出口视图设置为对象下的视图。我想看看我是否能显示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是而不是。
我删除了AlternateViewController和AlternateViewController_iPad.xib。然后,我重新创建了它们,但现在,在'为新文件选择选项:'弹出窗口中,我将类重置为AlternateViewController,将“子类”重置为UIViewController,并选中“针对iPad”和“接口。”修改这些新文件的TestAppDelegate,然后重新运行该应用程序。奇怪的是,AlternateViewController(iPad)现在显示并且变量self.window.rootViewController.nibBundle是而不是。
现在,我在这里错过了什么?错误在哪里?它与我的代码或Xcode 4.3?
其他问题:
如果TestViewController_iPad显示第一和有一个按钮那里,点击会显示AlternateViewController_iPad时,我应该如何,究竟该怎么办呢?
UPDATE 我已经想通了这个问题。会发生什么情况是,当没有xib文件的情况下创建ViewController时,方法loadView被添加到新的ViewController中。据我的理解,这个方法用于以编程方式/手动方式创建视图。使用xib文件或故事板时,必须将其删除。我删除它,一切正常! :)
AlternateViewController_iPad.xib不显示..你怎么能证实这一点? – Shubhank 2012-03-15 18:28:23
屏幕全黑。 – yoninja 2012-03-15 18:47:03
您的AlternateViewController_iPad.xib默认情况下可能有黑色视图? – Shubhank 2012-03-15 18:50:42