Эй, ребята, у меня есть следующая проблема: у меня есть приложение для IPad, и теперь я хочу, чтобы оно также работало на IPhone.(Я знаю, что это должно быть наоборот, но я не могу изменить это).Итак, теперь я хочу решить, какое представление мне нужно, используя:
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.
Не важно, где я установил xib для RootViewController, он всегда отображаетодин я определил для IPad-приложения.
Это мой код в приложении-делегате:
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 вместо другой?
Обе Xibs связаны стот же класс.
Если решение довольно простое и очевидное, пожалуйста, не вините меня, я действительно новичок в xcode, IB и target-c (я пишу в target-c в течение 1 1/2 месяцасейчас).
Спасибо заранее.
Maverick1st.