我现在在做休闲游戏。
我想与Twitter分享分数。
我的这张工作图片如下。

1.玩家玩完游戏后,就有比分。
2,当游戏进入游戏场景时,他们可以按下Twitter按钮(使用social.framework)
3.有一个类似“您得到xx分数!!”的文本。在twitterdisplay(modal)中。
*我想将xx更改为共享分数。

你能给我一些建议吗?
我是Objective-C的初学者。因此,简单的方法对我来说更好。
我希望一点一点地关注安全性和可伸缩性。

[信息]
* MainScene和GameOverScene由SKScene制成

MainScene.m

@implementation MainScene {

//The score
NSInteger _score;

}

- (void)incrementScore
{
_score++;
}

GameOverScene.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

 if([node.name isEqualToString:@"twitterbutton"]){
    NSLog(@"self.delegate = %@",self.delegate);
    [self.delegate showShareScreen];

    //delegate to ViewController
    if (nil == self.delegate) NSLog(@"delegate is nil");
    }
}

ViewController.m
-(void)showShareScreen
{
NSLog(@"showShareScreen");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *tweetSheet = [SLComposeViewController

composeViewControllerForServiceType:SLServiceTypeTwitter];

    tweetSheet.modalPresentationStyle = UIModalPresentationFormSheet;
    tweetSheet.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [tweetSheet setInitialText:@"You got xx score"];
     NSLog(@"self = %@",self);
    [self presentViewController:tweetSheet animated:YES completion:nil];

 }
 else {
     NSLog(@"not sls type twitter");
 }
 }

最佳答案

在ViewController的委托方法中更改行

[tweetSheet setInitialText:@“您获得xx分数”];

如下图所示;将分数包含在NSString的stringWithFormat:方法中

-(void)showShareScreenWithScore:(NSInteger) score {
NSLog(@"showShareScreen");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *tweetSheet = [SLComposeViewController

composeViewControllerForServiceType:SLServiceTypeTwitter];

    tweetSheet.modalPresentationStyle = UIModalPresentationFormSheet;
    tweetSheet.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [tweetSheet setInitialText:[NSString stringWithFormat:@"You got %d score",score]];
     NSLog(@"self = %@",self);
    [self presentViewController:tweetSheet animated:YES completion:nil];

 }
 else {
     NSLog(@"not sls type twitter");
 }
}

然后从GameOverScene调用此委托方法。
注意:在对象实例化后的那个时候在场景中创建Game over Scene时,可以设置GameOverScene的属性。因此,只需声明一个属性
@property (assign , nonatomic) NSInteger score;

并设置游戏结束的值Using NSURLSession。您可以从MainScene得分属性获得得分值。

NSURLSession

NSURLSession类和相关类提供了一个API
通过HTTP下载内容。该API提供了丰富的委托集
支持身份验证的方法,并为您的应用提供功能
在您的应用未运行时执行后台下载,或者
iOS,而您的应用已暂停。

关于ios - 如何在Objective-C中以不同的 View 共享本地var,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22728282/

10-09 01:39