2009-07-20 9 views
1

通知を受け取った後、UIViewControllerをsuperviewから削除しようとしていますが、機能しません。私はこのようなNSNotificationsを受け取るためにビューを登録SplashViewControllerにUIViewControllerは、nsnotificationを受け取った後にsuperviewから削除します。

- (void)applicationDidFinishLaunching:(UIApplication *)application{  
NSLog(@"applicationDidFinishLaunching"); 
[window addSubview:tabBar.view]; 
splash = [[SplashViewController alloc] init]; <-- this i want to remove 
[window addSubview:splash.view]; 
[window makeKeyAndVisible]; } 

:私のappDelegateで

は、私がこのような何かを

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fadeScreen:) name:@"CloseSplashScreen" object:nil]; 

SplashViewControllerが表示された直後Default.pngといくつかのデータが解析された後、スムーズに消えていくはずです...

私のTableViewControlerで私はviewWillAppearの通知を送信したいそれは動作しません。

- (void)viewWillAppear:(BOOL)animated{ 
NSLog(@"viewWillAppear"); 
[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseSplashScreen" object:self];} 

このメソッドは呼び出されますが、ビューはスーパービューから削除されません。私はpostNotificationを - (void)viewDidLoadに入れようとしましたが、メソッドは呼び出されませんでした...

これはなぜ機能しないのでしょうか?事前にありがとう

+0

これを解明しましたか?私も同様の問題に取り組んでいます。 –

答えて

0

何らかの種類のスプラッシュ画面を実装しようとしているように見えるので、UINavigationControllerを使用してスプラッシュを表示することを検討してください。あなたがやっているのは、View ControllerビューをUIWindowのサブビューとして追加することですが、誰もView Controllerを管理していません。これはあなたが物事をする方法ではありません。

UIWindowには、あなたのappDelegateにあるメソッドsetRootViewControllerがあります。そうすれば、Splash Controllerを押すことができます。一定の間隔が経過すると、アプリケーションの最初のviewControllerを押します。

サイドノートとして、ブランドアイデンティティを強化する手段として、一部の開発者がスプラッシュ画面を使用していることを理解しています。それは言われて、Apples Human Interface Guidelinesを考慮してください。

可能な限り、スプラッシュスクリーン、または他のスタートアップ 経験を表示しません。ユーザーがすぐにアプリを使い始めることができるときに最適です。

関連する問題