0

SLComposeViewControllerアプリで Facebook に投稿することを提案しています。ユーザーは、Facebook に投稿するか、「キャンセル」を押すという 2 つの方法のいずれかで、このビュー コントローラーを閉じることができます。ユーザーが「キャンセル」を押すSLComposeViewControllerと、 は閉じられ、ユーザーはその背後にある表示中のビュー コントローラーに戻ります。

ただし、私がやりたいことは、ユーザーが「投稿」を押した場合に、表示中のビュー コントローラーが閉じられた後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期待どおりの出力が得られます。でも、

誰かが私が間違っていることを見ることができますか? 私が指摘したように、ユーザーが Facebook に「投稿」した場合にのみ、表示中の View Controller を閉じる必要がありますが、キャンセルした場合はそうではありません。

4

2 に答える 2

3

SLComposeViewControllerResultDone以下のように、completionHandler の一部で表示中のビュー コントローラーを単純に閉じることができます。

    dispatch_async(dispatch_get_main_queue(), ^{
        [self dismissViewControllerAnimated:YES completion:nil];
    });

iOS 6 をサポートしている場合は、SLComposeViewController最初のものを閉じる必要があります。

于 2014-12-28T09:20:06.507 に答える