我正在尝试在收到通知后从superview中删除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];}
调用该方法,但不会从superview中删除该视图。我试图把postNotification放在 - (void)viewDidLoad中但该方法没有被调用...
为什么这不起作用的任何想法?提前谢谢你
答案 0 :(得分:0)
由于看起来您正在尝试实现某种启动画面,请考虑使用UINavigationController来呈现启动画面。你正在做的是添加一个视图控制器视图作为UIWindow的子视图,但没有人管理你的视图控制器。这不是你应该做的事情。
UIWindow的方法是setRootViewController,它应该在appDelegate中。这样你可以推动你的Splash Controller,并在一定时间间隔后推送应用程序的第一个viewController。
作为旁注,我理解一些开发人员使用启动画面作为强化品牌识别的手段。话虽如此,请考虑Apples Human Interface Guidelines:
尽可能避免显示启动画面或其他启动 经验。用户可以立即开始使用您的应用程序,这是最好的。