When I push the twitter image in the game, I want to show share image(SLComposeViewController's modal display).
But, when I push the twitter button, the display doesn't show and the log says like the title.
Then, I searched similar issues but I am not sure what should I do...
[ViewDidLoad] and [ViewDidAppear] is important thing, I know.
Below is my code.
ViewController.m
#import "ViewController.h"
#import "NewGameScene.h"
#import <Social/Social.h>
#import "GameOverScene.h"
@interface ViewController ()
{
GameOverScene *gameOver;
}
@end
@implementation ViewController
//Loads the view onto our main class
- (void)loadView
{
self.view = [[SKView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
}
//Executes when view finishes loading
- (void)viewWillLayoutSubviews
{
//extracted important code.
[super viewDidLoad];
gameOver = [[GameOverScene alloc]init];
gameOver.delegate = self;
}
-(void)showShareScreen
{
NSLog(@"showShareScreen");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
SLComposeViewController *tweetSheet = [SLComposeViewController
poseViewControllerForServiceType:SLServiceTypeTwitter];
[tweetSheet setInitialText:@"TestTweet from the Game !!"];
NSLog(@"self = %@",self);
[self presentViewController:tweetSheet animated:YES completion:nil];
}
else {
NSLog(@"not sls type twitter");
}
}
@end
MainScene.m
#import "MainScene.h"
#import "GameOverScene.h"
#import "Player.h"
#import "Obstacle.h"
#import "ViewController.h"
static GameOverScene *gameOver;
-(void)die{
//Create our game over scene with the current scene's dimensions
GameOverScene *gameOver = [[GameOverScene alloc] initWithSize:self.size];
ViewController *vc = [[ViewController alloc] init];
gameOver.delegate = vc;
NSLog(@"vc = %@",vc);
[gameOver didMoveToView:self.view];
//Present the game over scene with the fade in transition
[self.scene.view presentScene:gameOver transition:transition];
}];
}
GameOverScene.m
#import "GameOverScene.h"
#import "NewGameScene.h"
#import "MainScene.h"
#import <Social/Social.h>
//Screen is touched
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//Same as in NewGameScene menu
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
//Is the retry button touched?
if([node.name isEqualToString:@"twitterbutton"]){
NSLog(@"self.delegate = %@",self.delegate);
[self.delegate showShareScreen];
if (nil == self.delegate) NSLog(@"delegate is nil");
}
}
@end