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中,但是这个方法没有被调用...
任何想法为什么这不起作用?预先感谢你
答
因为它看起来像你试图实现某种类型的启动画面,可以考虑使用UINavigationController来呈现飞溅。你在做什么是添加视图控制器视图作为UIWindow的子视图,但没有人管理你的视图控制器。这不是你应该如何做的事情。
UIWindow的方法setRootViewController应该在你的appDelegate中。这样你就可以推送你的Splash Controller,并且在一定的时间间隔后推送应用程序的第一个viewController。
作为旁注,我了解到一些开发人员使用启动画面作为加强品牌识别的手段。也就是说,考虑Apples Human Interface Guidelines:
尽可能避免显示启动画面或其他启动 体验。用户可以立即开始使用您的应用程序是最好的。
你有没有想过这个?我现在正在处理类似的问题。 – 2012-11-04 02:41:31