if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// The device is an iPad running iOS 3.2 or later.
}
else {
// The device is an iPhone or iPod touch.
}
适用于RootViewController的所有视图 无论我为RootViewController设置xib,它总是显示我为IPad-App定义的那个。
这是我在App-Delegate中的代码:
viewController = [VoycerUniversalAppViewController sharedInstance];
UINavigationController *myNavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self.window addSubview:myNavigationController.view];
//[self.window addSubview:self.vcSplashScreen.view];
[self.window addSubview:viewController.view];
[self.window makeKeyAndVisible];
return YES;
这是我的[VoycerUniversalAppViewController sharedInstance]中的代码:
+ (VoycerUniversalAppViewController*) sharedInstance
{
@synchronized(self)
{
if(sharedInstance == nil)
{
// only allocate here - assignment is done in the alloc method
if (![AppState sharedInstance].loggedIn)
{
[AppState sharedInstance ].loggedIn = FALSE;
}
}
}
return sharedInstance;
}
+ (id) allocWithZone:(NSZone*)zone {
@synchronized(self) {
if(sharedInstance == nil) {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
// The device is an iPad running iOS 3.2 or later.
NSLog(@"The device is an iPad running iOS 3.2 or later.");
sharedInstance = [[super allocWithZone:zone] initWithNibName:@"VoycerUniversalAppViewController" bundle:nil];
}
else {
// The device is an iPhone or iPod touch.
NSLog(@"The device is an iPhone or iPod touch.");
sharedInstance = [[super allocWithZone:zone] initWithNibName:@"VoycerUniversalAppIPhoneViewController" bundle:nil];
}
// allocate and assign instance variable on first allocation
return sharedInstance;
}
}
return nil;
}
我几乎无处不在,我想如果我错过了一些设置或什么,但我找不到任何
你有没有人有想法,为什么不断加载VoycerUnversalAppViewController而不是另一个?
两个Xib都链接到同一个班级
如果解决方案是一个非常简单的解决方案,请不要怪我,我是xcode,IB和objective-c的新手(我现在在objective-c中编码1个半月)。
答案 0 :(得分:2)
对于主NIB,info.plist
文件中有一些设置:NSMainNibFile
和NSMainNibFile~ipad
。
在NIB文件中,您可以创建应用程序委托并设置导航控制器。