Представьте еще один контроллер представления от SkScene

Пытаюсь представить очередной viewController из моего "SkScene". Это мой основной viewController(tuViewController)

Код:

-(void) openTweetSheet{
    FacebookLikeViewDemoViewController *ctrl = [[FacebookLikeViewDemoViewController alloc] initWithNibName:@"FacebookLikeViewDemoViewController" bundle:nil];

    [self presentViewController:ctrl animated:YES completion:nil];
}

Это моя "SkScene":

tuViewController *viewController = [[tuViewController alloc]init];
[viewController openTweetSheet];

И viewController, который я хочу представить, это FacebookLikeViewDemoViewController, и мне нужно вернуться к "SkScene".

И я получил sigabrt error, я пробовал несколько способов представить viewController, но всегда безуспешно, один раз я получил обмен на viewController, но он был полностью черным. Я много читал, как это сделать, но лично я не могу понять. Я ценю вашу помощь.

Я тоже пробовал через Центр уведомлений.

Основной видКонтроллер

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

-(void)goToGameOverViewController:(NSNotification *) notification {
    FacebookLikeViewDemoViewController *helpVC = [[FacebookLikeViewDemoViewController alloc]initWithNibName:@"HelpViewController" bundle:nil];
    UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    [rootVC presentViewController:helpVC animated:YES completion:nil];
}

СкСцена

[[NSNotificationCenter defaultCenter]
 postNotificationName:@"GoToGameOverViewController" object:self];

Но я получил ту же ошибку. Я предпочитаю разбираться, почему не работает способ с уведомлением.


person Community    schedule 20.05.2014    source источник
comment
Пожалуйста, взгляните на это: stackoverflow.com/questions/22421252/   -  person ZeMoon    schedule 20.05.2014
comment
пожалуйста, полностью прочитайте документацию Apple, прежде чем продолжить, ее можно найти здесь developer.apple.com/library/ios/documentation/uikit/reference/   -  person Prabhu Natarajan    schedule 20.05.2014
comment
Я попытался использовать stackoverflow.com/questions/21578391/ Разрешение центра уведомлений, но я тоже вылетаю..   -  person    schedule 20.05.2014
comment
Какое исключение возникает?   -  person ZeMoon    schedule 20.05.2014
comment
SIGBART Когда я вызываю FacebookLikeViewDemoViewController *helpVC = [[FacebookLikeViewDemoViewController alloc]initWithNibName:@FacebookLikeViewDemoViewController bundle:nil]; [self presentViewController: helpVC анимированные: ДА завершение: ноль]; Он просто падает. Я попытался использовать FacebookLikeViewDemoViewController *helpVC = [[FacebookLikeViewDemoViewController alloc]init]; а затем он меняет вид, но это был полностью черный экран.   -  person    schedule 20.05.2014
comment
stackoverflow.com/ вопросов/23761194/ Я создал новую тему, с точно описанной проблемой.   -  person    schedule 20.05.2014


Ответы (1)


Судя по вашему вопросу, я предполагаю, что вы хотите публиковать сообщения в социальных сетях.

Вы можете либо передать ссылку на свой контроллер представления в SKScene, либо вместо этого использовать NSNotificationCenter. Я предпочитаю использовать последний.

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

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

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

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

Затем добавьте этот метод в свой контроллер представления:

-(void)createTweet:(NSNotification *)notification
{
    NSDictionary *tweetData = [notification userInfo];
    NSString *tweetText = (NSString *)[tweetData objectForKey:@"tweetText"];
    NSLog(@"%@",tweetText);

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

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

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

Вышеприведенный код отправляет NSNotification с текстом, который ваш контроллер представления подберет и выполнит указанный метод (в приведенном выше примере это createTweet).

person sangony    schedule 20.05.2014
comment
Спасибо, я разобрался с Центром уведомлений, это лучший способ, но у меня есть другая проблема, описанная здесь › stackoverflow.com/questions/23761194/ - person ; 20.05.2014