2009-07-20 7 views
1

J'essaie de supprimer un UIViewController de la vue d'ensemble après avoir reçu une notification mais cela ne fonctionne pas.UIViewController remove from superview après avoir reçu nsnotification

dans mon appDelegate je fais quelque chose comme ceci:

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

dans le SplashViewController i inscrire en vue de recevoir NSNotifications comme ceci:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fadeScreen:) name:@"CloseSplashScreen" object:nil]; 

le SplashViewController apparaît juste après la Default.png et devrait s'estomper doucement après que certaines données sont analysées ...

dans mon TableViewControler je veux envoyer la notification dans le viewWillAppear meth od mais ça ne marche pas.

- (void)viewWillAppear:(BOOL)animated{ 
NSLog(@"viewWillAppear"); 
[[NSNotificationCenter defaultCenter] postNotificationName:@"CloseSplashScreen" object:self];} 

La méthode est appelée mais la vue n'est pas supprimée de la vue d'ensemble. j'ai essayé de mettre le postNotification dans - (void) viewDidLoad mais la méthode n'est pas appelée ...

des idées pourquoi cela ne fonctionne pas? merci d'avance

+0

Avez-vous déjà trouvé cela? Im traitant d'un problème similaire maintenant. –

Répondre

0

Comme il semble que vous essayez d'implémenter une sorte d'écran de démarrage, pensez à utiliser un UINavigationController pour présenter le splash. Ce que vous faites est d'ajouter une vue de contrôleurs de vue comme une sous-vue d'UIWindow mais personne ne gère votre contrôleur de vue. Ce n'est pas comme ça que vous devriez faire les choses.

UIWindow a la méthode setRootViewController qui devrait être dans votre appDelegate. De cette façon, vous pouvez pousser votre Splash Controller, et après un certain intervalle, appuyez sur le premier viewController de l'application. En tant que sidenote, je comprends que certains développeurs utilisent des écrans de démarrage comme un moyen de renforcer l'identité de la marque. Cela étant dit, tenez compte Apples Human Interface Guidelines:

Autant que possible, éviter d'afficher un écran d'accueil ou toute autre expérience de démarrage . Il est préférable que les utilisateurs puissent utiliser votre application immédiatement.

Questions connexes