title: How do I present a UIViewController from SKScene?
body: <p>I'm entering iOS via Sprite Kit, which I recognize is unwise.</p>
  
  <p>My goal is to display a "Share" button upon Game Over. Tapping the share button should present a SLComposeViewController (Twitter Share). The contents of the scene should not change. </p>
  
  <p>The game logic that dictates "Game Over" lives in SpriteMyScene.m, a subclass of SKScene.</p>
  
  <p>I'm able to display a Share button on Game Over this way:</p>
  
  <pre><code>-(void)update:(CFTimeInterval)currentTime {
  
  if (gameOver){
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
                  [button addTarget:self
                             action:@selector(sendToController)
                  forControlEvents:UIControlEventTouchDown];
                  [button setTitle:@"Show View" forState:UIControlStateNormal];
                  button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
                  [self.view addSubview:button]; 
      }
  }
  
  - (void)sendToController
  {
      NSLog(@"ok");
      SpriteViewController *viewController = [SpriteViewController alloc];
      [viewController openTweetSheet];
  }
  </code></pre>
  
  <p>Where I get stuck is trying to get the showTweetButton method to work. My SpriteViewController.m looks like this:</p>
  
  <pre><code>- (void)openTweetSheet
      {
       SLComposeViewController *tweetSheet = [SLComposeViewController
                                             composeViewControllerForServiceType:
                                             SLServiceTypeTwitter];
  
      // Sets the completion handler.  Note that we don't know which thread the
      // block will be called on, so we need to ensure that any required UI
      // updates occur on the main queue
      tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
          switch(result) {
                  //  This means the user cancelled without sending the Tweet
              case SLComposeViewControllerResultCancelled:
                  break;
                  //  This means the user hit 'Send'
              case SLComposeViewControllerResultDone:
                  break;
          }
      };
  
      //  Set the initial body of the Tweet
      [tweetSheet setInitialText:@"just setting up my twttr"];
  
      //  Adds an image to the Tweet.  For demo purposes, assume we have an
      //  image named 'larry.png' that we wish to attach
      if (![tweetSheet addImage:[UIImage imageNamed:@"larry.png"]]) {
          NSLog(@"Unable to add the image!");
      }
  
      //  Add an URL to the Tweet.  You can add multiple URLs.
      if (![tweetSheet addURL:[NSURL URLWithString:@"http://twitter.com/"]]){
          NSLog(@"Unable to add the URL!");
      }
  
      //  Presents the Tweet Sheet to the user
      [self presentViewController:tweetSheet animated:NO completion:^{
          NSLog(@"Tweet sheet has been presented.");
      }];
  }
  </code></pre>
  
  <p>I always get something like this in the logs:</p>
  
  <blockquote>
    <p>-[UIView presentScene:]: unrecognized selector sent to instance 0x13e63d00 2013-10-17 18:40:01.611 Fix[33409:a0b] <em>*</em> Terminating app
    due to uncaught exception 'NSInvalidArgumentException', reason:
    '-[UIView presentScene:]: unrecognized selector sent to instance
    0x13e63d00'</p>
  </blockquote>