1

これが私のコードです:

if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    SLComposeViewController *viewController  = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social platform to use it, e.g. facebook or twitter

    [viewController setInitialText:sQuotes];

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.navController presentViewController:viewController animated:YES completion:nil];


    [viewController setCompletionHandler:^(SLComposeViewControllerResult result)
     {
         NSString *output;
         switch (result)
         {
             case SLComposeViewControllerResultCancelled:
                 output = @"Action Cancelled";
                 break;
             case SLComposeViewControllerResultDone:
             {
                 output = @"Post Successfull";

             }
                 break;
             default:
                 break;
         }

         [appDelegate.navController dismissViewControllerAnimated:YES completion:nil];
     }];
}

しかし、それは警告を示しています

ビューがウィンドウ階層にない!

4

1 に答える 1

1

警告はかなり明確です。ウィンドウ階層にないビューでモーダル ビューを表示しようとしていますが、これは機能しません。

これを変更してみてください[appDelegate.navController presentViewController:viewController animated:YES completion:nil];

代わりにこのようなものに:

[appDelegate.window.rootViewController presentViewController:viewController animated:YES completion:nil];

これにより、アプリの現在アクティブなルート ビュー コントローラーが、モーダル ビュー コントローラーを提示するものになることが保証されます。

AppDelegate の構築方法によっては、window変数を外部に公開するためにプロパティまたはゲッターを追加する必要がある場合があります。

于 2014-02-21T04:24:07.607 に答える