我正在展示一个用于发送 facebook 消息的 SLComposeViewController。呈现和发布工作正常,完成块被调用(所有日志都在那里)。
问题是,当发布完成后,我还想关闭当前的视图控制器(通过情节提要中的模态 segue 呈现)。
我无法让这个 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 可能引用了块中的错误控制器。那里也没有运气。