初めてアプリを開いたときに、設定ウィンドウを1回だけ開きたいのですが。その後、この設定ウィンドウは表示されなくなり、アプリのメインビューが表示されます。
ストーリーボードには最初のViewControllerが1つしかないため、この問題をどのように解決できるかわかりません。2つ必要です(設定付きのViewControllerとメインビュー付きの他のViewController)。
両方のViewControllerから選択するにはどうすればよいですか?
ありがとう。
初めてアプリを開いたときに、設定ウィンドウを1回だけ開きたいのですが。その後、この設定ウィンドウは表示されなくなり、アプリのメインビューが表示されます。
ストーリーボードには最初のViewControllerが1つしかないため、この問題をどのように解決できるかわかりません。2つ必要です(設定付きのViewControllerとメインビュー付きの他のViewController)。
両方のViewControllerから選択するにはどうすればよいですか?
ありがとう。
これを行う最良の方法は、ユーザーのデフォルトを使用することだと思います。デフォルトを登録し、setBool:TRUE forKey:@ "NeverOpened"のように言ってから、その値を確認します。trueの場合は、メインビューコントローラーに設定コントローラーをモーダルに表示させ、それが閉じられたら、「NeverOpened」キーの値をfalseに設定します。次回アプリを開くと、NeverOpenedはfalseになり、設定コントローラーは表示されません。
メインビューコントローラーのviewDidLoad:
メソッドでfirst-app-startを確認し、そうであれば、アニメーションなしで設定コントローラーをプッシュします。
あなたの問題は2つの部分に分けることができます。まず、ユーザーが以前にアプリケーションを実行したことがあるかどうかを判断するには、ユーザーがアプリケーションを実行するすべての時間にわたって永続的なものをクエリする必要があります。小さなデータの場合、基本的に辞書であるNSUserDefaultsを使用できます。NSUserDefaultsを照会するときに、対応するキーのオブジェクトがない場合、NSUserDefaultsはnilを返します。これを利用して、「hasRunKey」のようなキーを照会できます。nilが返された場合、ユーザーは以前にアプリを実行したことがないため、将来nilを取得しないように、hasRunKeyのオブジェクトを設定する必要があります。
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"hasRunKey"]) {
[[NSUserDefaults standardUserDefaults] setObject: [NSNumber numberWithBool:YES] forKey:@"hasRunKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
// Present the settings view controller -- see explanation below.
[self performSegueWithIdentifier:@"My Identifier" sender:self];
} else {
// Do what you normally do.
}
2番目の問題である設定ビューコントローラーの表示では、新しいファイルを追加し、ある種のMySettingsViewControllerクラスを使用してUIViewControllerをサブクラス化する必要があります。次に、ストーリーボードで、サイドパネルからUIViewControllerオブジェクトをドラッグします。そのビューコントローラーのIDインスペクターで、作成したMySettingsViewControllerにクラスを設定します。(関連する場所については、この画像を参照してください:https ://www.evernote.com/shard/s230/sh/ac134774-530f-4649-b3a2-e46b8d712c78/0352134cc8fab7241d97292f4d6ff464 )。
最初のビューコントローラを選択し、Ctrlキーを押しながらMySettingsViewControllerにドラッグして、2つの間にセグエを作成します。ストーリーボードで作成したセグエをクリックし、属性インスペクターウィンドウを使用して識別子を付けます。この時点でViewControllerをどのように表示するかを選択することもできます。私はあなたの目的のためにモーダルをお勧めします。
Nikolaiが推奨しているように、最初のView ControllerのviewDidLoadメソッドは、このコードに適した場所です。
たとえば、iOS開発に関するPaulHegertyのiTunesUの講義を視聴することを強くお勧めします。ストーリーボードの使用や、ストーリーボード間のセグエなど、これらの基本事項について説明しています。