无法呈现视图控制器 (SLComposeViewController)

Posted

技术标签:

【中文标题】无法呈现视图控制器 (SLComposeViewController)【英文标题】:Unable to present View Controller (SLComposeViewController) 【发布时间】:2013-01-06 03:48:20 【问题描述】:

我正在尝试在 ios6 上为 iPad 应用程序集成 Facebook,但遇到了问题:

当以下代码执行时,屏幕逐渐变暗(就像出现模态控制器时一样),但随后什么也没有发生。没有 Facebook 表格,什么都没有 - 甚至无法点击当前视图,好像 Facebook 表格被隐藏了一样。

知道为什么会发生这种情况吗?我尝试使用 UINavigationController 的根视图控制器和可见/顶部控制器来呈现工作表,但都是一样的。

顺便说一句,下面的代码在 AppDelegate 中。该方法也被调用以响应按钮单击。

谢谢, 尼科斯。

-(BOOL)socialPost:(UIImage*)image initialText:(NSString*)initialText url:(NSURL*)url

    if (![self canSocialPost])
        return NO;

    SLComposeViewController* SLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    if (SLComposerSheet == nil)
        return NO;

    [SLComposerSheet setInitialText:initialText];
    [SLComposerSheet addImage:image];
    [SLComposerSheet addURL:url];
    [SLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) 

        switch (result) 
            case SLComposeViewControllerResultCancelled:
                DLog(@"Social post Canceled");
                break;
            case SLComposeViewControllerResultDone:
                DLog(@"Social post Sucessful");
                break;

            default:
                break;
        
    ];

    [[self window].rootViewController presentViewController:SLComposerSheet animated:YES completion:nil];
    return YES;

【问题讨论】:

您可以发布任何其他可能相关的代码吗?我刚刚复制/粘贴了您的代码,它按预期执行。 【参考方案1】:

0x7fffffff 是对的 - 问题实际上出在其他地方:

我将嵌套视图添加到“根视图”,但也没有将它们的视图控制器添加为子视图,即

我在做:

[_ContainerView addSubview:_ViewControllers[tabId].view];

没有

[self addChildViewController:_ViewControllers[tabId]];

现已修复 - 感谢您测试此 0x7fffffff。

【讨论】:

我遇到了和你一样的问题。这个答案也解决了我的问题。

以上是关于无法呈现视图控制器 (SLComposeViewController)的主要内容,如果未能解决你的问题,请参考以下文章

无法呈现视图控制器 (SLComposeViewController)

无法找到呈现视图控制器 - 覆盖中的 UIDatePicker

无法从 App Delegate 呈现视图控制器

无法推送或呈现视图控制器

从 SKScene 呈现后无法关闭视图控制器

无法在标签栏控制器的顶部完全呈现模态视图控制器