2014-04-17 50 views
4

我使用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 ! 

我添加了代码:

UIViewController *activeController = [UIApplication sharedApplication] keyWindow.rootViewController. ; 
if ([ activeController isKindOfClass:[UINavigationController class]]) { 
    activeController = [(UINavigationController *)activeController visibleViewController] ; 
} 
[activeController presentViewController:controllerSLC animated:YES completion:Nil]; 

它适用于窗口家庭应用程序,我h没有错误。

但是,当我呼吁其他窗口相同的功能,错误再次.... 预先感谢您的帮助

+0

AFF我发现刚刚发布具有后,只是说: 否则,如果(activeController.modalViewController){activeController = activeController.modalViewController;} – Slayes

回答

4

我有同样的问题......给这个一杆!

首先获得根视图控制器....

-(UIViewController*) getRootViewController { 
return [UIApplication sharedApplication].keyWindow.rootViewController; 
} 

现在不是activeController = [(UINavigationController *)activeController visibleViewController] ;

这样做:

UIViewController* activeController = [self getRootViewController]; 

现在你的最后一行[activeController presentViewController:controllerSLC animated:YES completion:Nil];应该工作。

希望这会有所帮助。

+0

这是帮了我很多,我得到了同样的问题太多,当我试图运行SLComposeViewController从不是父视图:)非常感谢, – ilovebali

相关问题