Попытка отклонить View Controller, который представляет SLComposeViewController после того, как пользователь публикует FB в iOS
Я представляю SLComposeViewController
опубликовать в Facebook в моем приложении. Пользователь может отклонить этот View Controller одним из двух способов: либо опубликовав свое сообщение в Facebook, либо нажав "Отмена". Когда пользователь нажимает "отменить", SLComposeViewController
отклоняется, и пользователь возвращается к представителю View Controller, который стоит за ним.
Однако то, что я хотел бы сделать, - если пользователь нажимает "post", то я хочу, чтобы представление View Controller также было отклонено после SLComposeViewController
уволен (то есть в SLComposeViewControllerResultDone
дело). Моя проблема в том, что я не уверен, как это сделать. Я понимаю, что для этого использовал бы обработчик завершения, но я застрял здесь. Вот код, который у меня есть, который представляет SLComposeViewController
:
SLComposeViewController *fbSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[fbSheet setInitialText:initialText];
[fbSheet addImage:myImage];
SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result) {
switch(result){
case SLComposeViewControllerResultCancelled:
default:
{
NSLog(@"Cancelled.....");
}
break;
case SLComposeViewControllerResultDone:
{
NSLog(@"Posted....");
}
break;
}
};
[fbSheet setCompletionHandler:completionHandler];
[self presentViewController:fbSheet animated:YES completion:nil];
С обработчиком завершения выше, я получаю NSLog
выходы, как и ожидалось. Тем не мение,
Кто-нибудь может увидеть, что я делаю не так? Как я уже отмечал, мне нужно, чтобы представление View Controller было отменено ТОЛЬКО в том случае, если пользователь "публикует" сообщения в Facebook, но НЕ при их отмене.
2 ответа
Вы можете просто отклонить представление контроллера представления в SLComposeViewControllerResultDone
часть завершения, как показано ниже:
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];
});
Если вы поддерживаете iOS 6, то вам нужно закрыть SLComposeViewController
первый.
Вам не нужно закрывать ViewController в обработчике завершения, он будет обработан при нажатии кнопки отмены
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController * fbSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:initialText];
[fbSheet addImage:myImage];
[self presentViewController:controller animated:YES completion:Nil];
}