2012-05-07 13 views
0

私のアプリの新しいバージョンは、iOS 5.0以降に依存します。しかし、以前のバージョンではiOS 4が許可されていました。正しく覚えていれば、一部のユーザーのサポートを削除した場合、Appleはそのアプリケーションを拒否します。私は、iOS 5.0以上ではないデバイスを、oldVersionと呼ばれる別のXIBをロードしようとしています。ここで私が試したものです:古いデバイス用に異なるView Controllerをロードするにはどうすればよいですか?

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (version < 5.0) { 
    UIViewController *olderVersion = [[[ViewController alloc] initWithNibName:@"oldVersion" bundle:nil] autorelease]; 
    self.window.rootViewController = olderVersion; 
    [self.window makeKeyAndVisible]; 
} else { 
    //Load normally. 
} 

(これはアプリデリゲートの- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsである)


また、私は私の新しいバージョンと私のviewDidLoad

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 
if (version < 5.0) { 
    oldVersion *screen = [[oldVersion alloc] initWithNibName:nil bundle:nil]; 
    [self presentModalViewController:screen animated:NO]; 
    [screen release]; 
    return; 
} else { 
    //Normal stuff... 
} 

をロードしようとしました。いずれも正しく機能しません。最初のアプリケーションデリゲートでは画面がロードされますが、NSLog()やUIAlertViewなどのコードには何もロードされません。 2番目のビュー(viewDidLoad)は画面に表示されず、コード内でカスタマイズすることなく新しいバージョンをロードするだけです。

iOS 5.0以降でないデバイスをoldVersionに送信するにはどうすればよいですか?

答えて

0

私はそれを解決:

if ([[UIApplication sharedApplication] respondsToSelector(userInterfaceLayoutDirection)]) { 
    // userInterfaceLayoutDirection is only available in iOS 5+ 
    // use 5.0+ version of xib 
} 

私は定数のアドレスがnilではなく、そこからOSのバージョンを引き出す場合にも確認することができます信じています!明らかに、私がしなければならなかったのは、新しいXIBを表示する前に少し待つだけでした(私は0.1を使用しています)。だから、今ある:usersOnOldVersionsOfiOSReallyNeedToUpgradeToiOS5OrHigherToUseThisVeryCoolAppは何も変わりません>のiOS 5

0

viewDidLoadで、バージョンを確認してnsuserdefaultsにログするので、毎回チェックする必要はありません。新しいビューをロードします。

+0

のためのXIBを開き

[self performSelector:@selector(usersOnOldVersionsOfiOSReallyNeedToUpgradeToiOS5OrHigherToUseThisVeryCoolApp) withObject:nil afterDelay:0.1]; 

ところ。また、なぜ私はそれを保存する必要がありますか?ユーザーがデバイスをアップグレードする場合はどうなりますか? –

0

オブジェクトが新しいバージョンのOSでのみ使用可能なメソッドを実装しているかどうかを確認することができます。これは現在の実行時環境をチェックする一般的な方法です。例:

if (&UIApplicationLaunchOptionsNewsstandDownloadsKey != nil) { 
    // UIApplicationLaunchOptionsNewsstandDownloadsKey is only available in iOS 5+ 
    // use 5.0+ version of xib 
} 
+0

私はすでにユーザーが> iOS 5を実行しているかどうかを検出できます。とにかく、ありがとうございます。私はすでにそれを解決しました。 –

関連する問題