私はこれを何時間も戦ってきました。私はどこでも検索してきただけで、私の問題の解決策を見つけることができないようです。私はここでいくつかの重要なコンセプトが欠けていると確信しています。modalViewControllerを表示する際に問題が発生する
私AppDelegate(didFinishLaunching)は、基本的に私の窓を設定し、RootViewControllerを呼び出します:
// create our window UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [window setBackgroundColor:[UIColor blackColor]]; // create our rootviewcontroller RootViewController *controller = [[RootViewController alloc] init]; // add our rootviewcontroller's view to our window [window addSubview:controller.view]; // controller is now owned by window's view [controller release]; // show us to the world [window makeKeyAndVisible];
私は、ウィンドウのサブビューとしてcontroller.viewを追加すると、私の理解がRootVCのloadViewメソッドが自動的に呼び出されますということです。 RootVC loadViewメソッドで
、私はtabBarController、navigationControllerとそれ自身のViewControllerを持つそれぞれのタブを作成します。すべて正常に動作しています。 RootVCのviewDidLoadで
は、私は、これは、ユーザがこのアプリを実行している最初の時間であるかどうかをチェックしています、そしてもしそうなら、私は、モーダルウェルカム画面を投げるしたいです。これは私が問題を抱えている部分です。
私はRootVCのviewDidLoadメソッドのうち、できるだけ多くのコードを維持したいのですが、理想的にはこれで私が欲しいものを達成することができるだろう:
WelcomeViewController *welcome = [[WelcomeViewController alloc] init]; [self presentModalViewController:welcome animated:true]; [welcome release];
明らかにこれは動作しません。私は明示的にビューのプロパティを設定していないので、WelcomeVCのloadViewはまだ実行されていません。私はさまざまなソリューション(welcome.view - [[UIView ....]、self.viewを設定するためのWelcomeVCのinitメソッドを使用して)の束で遊んだが、私はちょうどそのモーダルをポップアップさせることはできないようだ。
どのように私は私が探しているものを達成する必要がありますか?ベストプラクティスとは何ですか?また、自分のコードをきちんと整理しておくのに最適な解決策は何ですか?
私がこだわっているので、うまくいけば、あなたのソリューションは、私は私のアプリの開発を継続することができます!
があなたの質問に関連していない、私は考えていない[ウィンドウのaddSubview:controller.view]ビューコントローラを保持します。 – MHC
@MHC - 詳しいことはできますか?なぜそう思うの?私はビューがサブビューを追加するたびに、そのサブビューが保持されると思った。 – djibouti33
サブビューは保持されますが、ビューコントローラは保持されません。 – MHC