2009-07-20 82 views
1

我試圖在收到通知後從超級視圖中刪除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

回答

0

因爲它看起來像你試圖實現某種類型的啓動畫面,可以考慮使用UINavigationController來呈現飛濺。你在做什麼是添加視圖控制器視圖作爲UIWindow的子視圖,但沒有人管理你的視圖控制器。這不是你應該如何做的事情。

UIWindow的方法setRootViewController應該在你的appDelegate中。這樣你就可以推送你的Splash Controller,並且在一定的時間間隔後推送應用程序的第一個viewController。

作爲旁註,我瞭解到一些開發人員使用啓動畫面作爲加強品牌識別的手段。也就是說,考慮Apples Human Interface Guidelines

儘可能避免顯示啓動畫面或其他啓動 體驗。用戶可以立即開始使用您的應用程序是最好的。

相關問題