UIViewController在收到通知后从超级视图中删除

UIViewController在收到通知后从超级视图中删除

问题描述:

我试图在收到通知后从超级视图中删除UIViewController,但它不起作用。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中,但是这个方法没有被调用...

任何想法为什么这不起作用?预先感谢你

+0

你有没有想过这个?我现在正在处理类似的问题。 – 2012-11-04 02:41:31

因为它看起来像你试图实现某种类型的启动画面,可以考虑使用UINavigationController来呈现飞溅。你在做什么是添加视图控制器视图作为UIWindow的子视图,但没有人管理你的视图控制器。这不是你应该如何做的事情。

UIWindow的方法setRootViewController应该在你的appDelegate中。这样你就可以推送你的Splash Controller,并且在一定的时间间隔后推送应用程序的第一个viewController。

作为旁注,我了解到一些开发人员使用启动画面作为加强品牌识别的手段。也就是说,考虑Apples Human Interface Guidelines

尽可能避免显示启动画面或其他启动 体验。用户可以立即开始使用您的应用程序是最好的。