Я пытаюсь сделать мое приложение ориентации отключить пейзаж, если выполняются следующие условия:Отключить ориентировка в некоторых View Controllers, если устройство iPhone
- Устройство является iPhone
- Представленный View Controller является
WelcomeViewController
,LogInViewController
илиSignUpViewController
Я попытался это в AppDelegate.m
:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
if ([[window.rootViewController presentedViewController] isKindOfClass:[WelcomeViewController class]])
return UIInterfaceOrientationMaskPortrait;
else
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
Это не работает, так как я получаю сообщение об ошибке: Control may reach end of-non-void function
.
Я также попытался это:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
NSString *deviceModel = (NSString*)[UIDevice currentDevice].model;
if ([deviceModel rangeOfString:@"iPhone"].location != NSNotFound && [[window.rootViewController presentedViewController] isKindOfClass:[WelcomeViewController class]]) {
NSLog(@"I am an iPhone");
return UIInterfaceOrientationMaskPortrait;
} else if ([deviceModel rangeOfString:@"iPhone"].location != NSNotFound && [[window.rootViewController presentedViewController] isKindOfClass:[LogInViewController class]]) {
NSLog(@"I am an iPhone");
return UIInterfaceOrientationMaskPortrait;
} else if ([deviceModel rangeOfString:@"iPhone"].location != NSNotFound && [[window.rootViewController presentedViewController] isKindOfClass:[SignUpViewController class]]) {
NSLog(@"I am an iPhone");
return UIInterfaceOrientationMaskPortrait;
} else {
NSLog(@"I am NOT an iPhone");
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
Если я проверить его на iPhone, однако, он будет идти прямо в другое заявление, что интересно, так как если я удалю [[window.rootViewController presentedViewController] isKindOfClass:[SignUpViewController class]]
, он будет работать.
Что я делаю неправильно?
О да, это так. Я не знаю, почему я этого не видел. У меня есть некоторые утверждения if в другом месте в моем приложении, где нет никакого другого утверждения, поскольку мне не нужно приложение, чтобы что-то делать, если оно не совпало, так что это не переходило мне на ум, чтобы быть честным. Что касается вашего предложения сделать один для всех трех ViewControllers, я это рассмотрю. Во всяком случае, спасибо за ответ. – chrisjr
Несомненно, мое архитектурное предложение - всего лишь предложение. Но, по-моему, вы гораздо менее склонны связывать себя в эти самые сучки. Вам решать! – matt