How do I present a UIViewController from SKScene?

You’re creating a new view controller but never presenting it:

SpriteViewController *viewController = [SpriteViewController alloc];

I’m assuming that SpriteViewController is what presents your SpriteMyScene, and you’d like to hand control back to the presenting SpriteViewController.

You need to keep a reference to SpriteViewController in your SpriteMyScene subclass, and then access that reference when you call openTweetSheet.

in SpriteMyScene.h

@class SpriteViewController;

@interface SpriteMyScene : SKScene

@property (nonatomic, weak) SpriteViewController *spriteViewController;

@end

in SpriteViewController.m

// somewhere you initialize your SpriteMyScene object, I'm going to call it myScene

myScene.spriteViewController = self;

in SpriteMyScene.m

#import "SpriteViewController.h"

- (void)sendToController
{
    NSLog(@"ok");
    // use the already-created spriteViewController
    [_spriteViewController openTweetSheet];
}

Leave a Comment