Ios 试图呈现。。。其视图不在窗口层次结构中

Ios 试图呈现。。。其视图不在窗口层次结构中,ios,objective-c,view,hierarchy,Ios,Objective C,View,Hierarchy,我用WinDev Mobile开发,它生成了一个项目,然后我用XCode打开进行编译。 只有在facebook上的WM共享功能尚未开发,我必须在ObjC中开发 我从代码开始: if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewController *controllerSLC = [SLComposeViewController composeVie

我用WinDev Mobile开发,它生成了一个项目,然后我用XCode打开进行编译。 只有在facebook上的WM共享功能尚未开发,我必须在ObjC中开发

我从代码开始:

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {

    SLComposeViewController *controllerSLC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook] ;
    [controllerSLC setInitialText:myMessage];
    [controllerSLC addURL:[NSURL URLWithString:myUrl]];
    [controllerSLC addImage:[UIImage imageNamed:myImage]];

    // NSLog (@"% @", [UIApplication sharedApplication] keyWindow.rootViewController.)

    [self presentViewController:controllerSLC animated:YES completion:Nil];

    controllerSLC.completionHandler = ^(SLComposeViewControllerResult result) {
        NSString *output = nil;
        switch(result) {
            SLComposeViewControllerResultDone box:
                output = @ "Your tweet has-been sent" ;
                status = 2;
                // NSLog (@" SENT ");
                break;
            SLComposeViewControllerResultCancelled box:
                output = @"Your tweet has-been canceled ";
                status = 3;
                // NSLog (@" canceled ");
                break;
            default:
                break;
        }
        [controllerSLC dismissViewControllerAnimated:YES completion:nil] ;
    };

}
我只得到一个错误:

Warning Attempt to present <SLComposeViewController > on <CFenPrincipaleViewController> Whose view is not in the window hierarchy !
它在Windows home应用程序上工作,我没有错误

但是,当我在另一个窗口上调用相同的函数时,错误返回。。。。
提前感谢您的帮助

我也遇到了同样的问题……试一试

首先获取根视图控制器

-(UIViewController*) getRootViewController {
return [UIApplication sharedApplication].keyWindow.rootViewController;
}
现在不是
activeController=[(UINavigationController*)activeController visibleViewController]

这样做:

UIViewController* activeController = [self getRootViewController];
现在,您的最后一行
[activeController当前视图控制器:控制器LC动画:是完成:无]应该可以工作


希望这对我有帮助。

Aff我刚刚发布后发现,刚刚添加了:else if(activeController.modalViewController){activeController=activeController.modalViewController;}这对我帮助很大,我在尝试从非父视图运行SLComposeViewController时也遇到了同样的问题:)非常感谢,
UIViewController* activeController = [self getRootViewController];