Facebook メッセージを送信するための SLComposeViewController を提示しています。提示と投稿は正常に機能し、完了ブロックが呼び出されています (すべてのログがあります)。
問題は、投稿が完了したときに、現在のビュー コントローラー (ストーリーボードのモーダル セグエを介して表示される) も閉じたいことです。
この VC を[self dismissViewControllerAnimated:YES completion:nil];
ブロック内で閉じることができません。
- (void)postToFacebook
{
NSLog(@"Posting to Facebook ...");
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
NSLog(@"Facebook is available ...");
SLComposeViewController *fbSheet = [SLComposeViewController
composeViewControllerForServiceType:SLServiceTypeFacebook];
[fbSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
// [self endQuiz];
[self dismissViewControllerAnimated:YES completion:nil];
NSLog(@"FB post complete");
}];
[fbSheet setInitialText:[NSString stringWithFormat:@"I just scored a %i on this game", self.totalPoints]];
[self presentViewController:fbSheet animated:YES completion:^{
NSLog(@"Completed showing FB sheet");
}];
} else {
NSLog(@"Facebook not available");
[self endQuiz];
}
}
おそらくselfがブロック内の間違ったコントローラーを参照していると考えて、ブロックセーフなselfのバリエーションを試しました。そこにも運はありません。