わかりました、このタイトルは奇妙に思えるかもしれませんが、ご容赦ください。ユーザーがログイン時に起動するように設定できるアプリがあります。つまり、ユーザー (Dock/Finder をクリックするなど) によってアプリが起動されることもあれば、ログイン時にシステムによってアプリが自動的に起動されることもあります。
ユーザーがアプリを起動したときにウィンドウを表示したいのですが、自動的に起動したときは表示したくありません(ユーザーにとっては面倒だと思います)。どうやってやるの?
わかりました、このタイトルは奇妙に思えるかもしれませんが、ご容赦ください。ユーザーがログイン時に起動するように設定できるアプリがあります。つまり、ユーザー (Dock/Finder をクリックするなど) によってアプリが起動されることもあれば、ログイン時にシステムによってアプリが自動的に起動されることもあります。
ユーザーがアプリを起動したときにウィンドウを表示したいのですが、自動的に起動したときは表示したくありません(ユーザーにとっては面倒だと思います)。どうやってやるの?
アプリの起動を自動化する方法によって異なりますが、コマンド ライン引数を使用して、システムの起動とユーザーの起動を区別できます。
したがって、コマンド ラインの起動は次のようになります。
MyApp -autoLaunch "Y"
Cocoa アプリでコマンド ライン引数を解析するには、次を使用できますNSUserDefaults
(はい、できます!):
if( ![[NSUserDefaults standardUserDefaults] objectForKey:@"autoLaunch"] isEqualToString:"Y"] ) {
// do something for user initiated launch
}
私はあなたの質問に対する正確な答えを持っていません。ただし、ユーザーが最後にアプリを終了したときにウィンドウが表示されていた場合は、アプリにウィンドウを表示することをお勧めしますか?
これは、アプリとウィンドウの復元に関するMac UIガイドラインの提案とより一致している可能性があり、ユーザーの期待の範囲内です。
また、ログイン時にアプリを起動するように設定したユーザーは、ウィンドウを閉じて次回は復元しないことを理解している可能性があります。または、ログイン時にシステムにアプリを非表示にすることもできます。