Objective c 如何从NSObject类显示SLCompose视图控制器

Objective c 如何从NSObject类显示SLCompose视图控制器,objective-c,facebook,slcomposeviewcontroller,Objective C,Facebook,Slcomposeviewcontroller,这是我的密码: if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { SLComposeViewController *viewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; //Tell him with what social plat

这是我的密码:

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];
     }];
}
但它会显示警告


其视图不在窗口层次结构中

警告非常明确。您试图通过不在窗口层次结构中的视图来显示模式视图,这将不起作用

尝试更改此
[appDelegate.navController presentViewController:viewController动画:是完成:无]

改为这样:

[appDelegate.window.rootViewController呈现viewController:viewController动画:是完成:无]

这保证了当前活动的应用程序根视图控制器将是显示模式视图控制器的控制器

根据AppDelegate的构建方式,您可能需要添加一个属性或只是一个getter,以便将
窗口
变量呈现给外部世界