1

通知を受け取った後、スーパービューから UIViewController を削除しようとしていますが、うまくいきません。

私のappDelegateでは、次のようなことをしています:

- (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]; }

SplashViewController で、ビューを登録して、次のように NSNotifications を受け取ります。

[[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 に入れようとしましたが、メソッドが呼び出されません...

これが機能しない理由はありますか?前もって感謝します

4

1 に答える 1

0

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

UIWindow には、appDelegate にある必要があるメソッド setRootViewController があります。そうすれば、Splash Controller をプッシュし、一定の間隔を置いてアプリの最初の viewController をプッシュできます。

補足として、一部の開発者はブランド アイデンティティを強化する手段としてスプラッシュ スクリーンを使用していることを理解しています。そうは言っても、Apples Human Interface Guidelinesを考慮してください。

可能な限り、スプラッシュ スクリーンやその他のスタートアップ エクスペリエンスを表示しないようにします。ユーザーがすぐにアプリを使い始めることができるのが最善です。

于 2014-08-08T13:02:16.840 に答える