Dont la vue n'est pas dans la fenêtre hiérarchie du problème?

Avertissement: Tentative de présenter sur dont la vue n'est pas dans la fenêtre hiérarchie!

Oui, j'ai regardé les autres questions et réponses avant de poster cette question. Ils n'ont pas aidé moi à résoudre ce problème. Voici ce que je fais. J'appelle ma classe singleton socialHelper pour afficher une fiche action, où postToFacebook méthode est une option pour la sélectionner. En cliquant sur cette action, j'ai l'Avertissement ci-dessus et la postToFacebook n'est pas affiché. Je suis d'appeler à partir d'un UIViewController avec le UINavigationController que le contrôleur principal, et mon SocialHelper classe est un NSOject.

- (void)postToFacebook
{
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    slComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [slComposeViewController setInitialText:@"Building stairs? Checkout StairsPro on the app store!"];
    [slComposeViewController addImage:[UIImage imageNamed:@"StairsIcon120x120.png"]];
    [slComposeViewController addURL:[NSURL URLWithString:@"https://itunes.apple.com/us/app/stairs-pro/id477032819?ls=1&mt=8"]];

    [self presentViewController:slComposeViewController animated:YES completion:nil];

    //I've also tried this, which shows the post window, but after hitting cancel or post, my previous viewController is not the current viewController. So my navigation bar is gone and can't move around in my app. 
    //[[[[UIApplication sharedApplication]delegate]window]setRootViewController:slComposeViewController];

    }else{
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"No Facebook Account" message:@"No Facebook account has been configured. You can configure or create a Facebook account in settings." delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alert show];
}
}

Donc ce que je demande est ce qui est le meilleur moyen pour obtenir le slComposerViewController à afficher dans ce cas, également, comment nous pourrions utiliser la UIApplication option. Merci!!!!

  • Est SocialHelper en fait sur l'écran?
  • Rien n'est affiché sur l'écran quand elle est appelée aussi loin que la PostToFacebook fenêtre. Juste l'Écran je l'ai appelé à partir. Mais le UActionSheet œuvres, puis j'ai frappé Post de Facebook, et j'ai l'avertissement et le UIActionSheet s'en va, et tout juste de retour à l'écran je l'ai appelé à partir.
  • presentViewController:animated:completion: doit être appelée à partir de la viewController qui est actuellement présentée à l'écran. Si SocialHelper n'est pas le actuellement présenté viewController alors vous ne devriez pas être l'appel de cette méthode
  • J'ai essayé de déplacer tout à la classe UIViewController c'est affiché et a obtenu le même avertissement.
  • Êtes-vous sûr que vous avez le droit viewController?
  • Non, pas exactement, je suis sûr que je suis en train de faire quelque chose de mal...juste ne sais pas quoi. Fonctionne très bien sur Cocos2d avec CCDirector. Post de facebook est appelé de mon aboutView viewController avec [[SocialHelper sharedInstance]shareActionSheet]; qui fonctionne et s'affiche la feuille d'action...mais une fois de frapper postToFacebook je reçois le message d'avertissement. Des idées? J'utilise les Storyboards pour le aboutView si ce qui compte.
  • s'il vous plaît, faire part de votre projet; probablement le point de vue de la hiérarchie peut être salissant, mais sans voir comment le point de vue de la hiérarchie est construit, il est très difficile, même à deviner d'où le problème pourrait être...
  • Le UINavigationController est la présentation de la vue. J'ai couru un NSLog pour voir ce que le courant viewController a été.
  • Vous avez besoin pour briser le problème. J'ai eu une fois le problème de ce genre, a pris toute la journée pour comprendre que j'ai été absent 'super' appel. Essayez de présenter un simple point de vue du contrôleur [auto presentViewController:[UIViewController nouveau] animation:OUI achèvement:nil];
  • Si vous faites appel à votre classe singleton socialHelper pour afficher une action de bilan et de votre SocialHelper classe est un NSOject alors vous ne voulez pas (ou ne pouvez pas) à l'utilisation de l'auto pour afficher la feuille d'action parce que le moi est un objet qui n'est pas le point de vue de la hiérarchie. Vous avez besoin d'utiliser une-vue-contrôleur pour afficher la feuille d'action.
  • Voici ce que j'ai...MainViewController avec un UINavigationController, c'est un FlipsideViewController pour les paramètres, puis sur le bouton pour la page "à propos" qui est aussi un UIViewController. J'ai ajouté le journal dans le sujet où l'UIActionSheet est appelé à partir d' (Montre UINavigation est l'actuel ViewController). La méthode de la UIActionSheet est dans le socialhelper classe NSObject. J'ai Essayé de déplacer tout au Sujet de UIViewController classe...ce qui a donné le même résultat. Espérons que cette aide

InformationsquelleAutor Jason | 2014-05-31