Отправка счета в 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 подберет и выполнит указанным методом.