Отправка счета в Facebook

Я создал приложение в SpriteKit с xcode, где, когда игра заканчивается, он показывает ваш счет, и я хочу добавить функцию, чтобы опубликовать ваш счет на Facebook. Почти весь мой код в MyScene.m где он не может получить доступ presentViewController, Только мой файл ViewController.m может получить к нему доступ, поэтому я попытался вызвать метод экземпляра в Viewcontroller из Myscene.m, но я не могу найти способ сделать это. Единственный способ найти методы вызова из других файлов - это использовать +(void) который является классовым методом, я думаю.

Myscene.m:

    if (location.x < 315 && location.x > 261 && location.y < 404 && location.y > 361) {
 //if you click the post to facebook button (btw, location is a variable for where you tapped on the screen)

     [ViewController facebook];
                    }

ViewController.m:

+(void)facebook{

    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
        SLComposeViewController *facebook = [[SLComposeViewController alloc] init];
        facebook = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

        [facebook setInitialText:@"initial text"];  
    }

    }

Так что это сработало, и он правильно вызвал метод класса Facebook, но когда я поставил [self presentViewController:facebook animated:YES] после скобок setInitialText выдается эта ошибка: неизвестный метод класса для селектора 'presentViewController:animated:'

Кстати, это позволяет мне использовать presentViewController в методе экземпляра, но я не могу вызвать этот метод из метода класса или из моего файла Myscene. Есть ли способ вызвать метод экземпляра из другого файла или получить доступ presentViewController из метода класса? Спасибо

1 ответ

Решение

Вы можете передать ссылку на ваш View Controller на SKScene или использовать NSNotificationCenter вместо. Я предпочитаю использовать последний.

Сначала убедитесь, что вы добавили Social.framework в свой проект.

Импортируйте социальные рамки в свой View Controller #import <Social/Social.h>

Затем в методе viewDidLoad вашего View Controller добавьте этот код:

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(createPost:)
                                         name:@"CreatePost"
                                       object:nil];

Затем добавьте этот метод в ваш View Controller:

-(void)createPost:(NSNotification *)notification
{
    NSDictionary *postData = [notification userInfo];
    NSString *postText = (NSString *)[postData objectForKey:@"postText"];
    NSLog(@"%@",postText);

    // build your tweet, facebook, etc...
    SLComposeViewController *mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];

}

В соответствующем месте в вашем SKScene (выигранная игра, проигранная игра и т. Д.) Добавьте этот код:

NSString *postText = @"I just beat the last level.";
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:postText forKey:@"postText"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"CreatePost" object:self userInfo:userInfo];

Приведенный выше код отправляет NSNotification с текстом, который ваш View Controller подберет и выполнит указанным методом.

Другие вопросы по тегам