当我试图在导航控制器上演示ActivityController时,收到以下警告:,

Attempt to present <UIActivityViewController: 0x15be1d60> on <UINavigationController: 0x14608e80> whose view is not in the window hierarchy!

我试图通过以下代码呈现视图控制器,

UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
    activityController.excludedActivityTypes = excludeActivities;

    UIViewController *vc = self.view.window.rootViewController;
    [vc presentViewController: activityController animated: YES completion:nil];

    [activityController setCompletionHandler:^(NSString *activityType, BOOL completed) {
        NSLog(@"completed");

    }];

这里怎么了?

推荐答案

您正在try 从rootViewController中显示视图控制器.在您的情况下,我认为rootViewController不是当前的ViewController.要么你展示了,要么在上面推了一个新的UIViewController.应该从最顶端的视图控制器本身显示视图控制器.

你需要改变:

UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: activityController animated: YES completion:nil];

致:

[self presentViewController: activityController animated: YES completion:nil];

Objective-c相关问答推荐

Objective-c 点表示法或方括号表示法中首选什么?

如何测试 NSCFBolean 值?

NSTimeZone:localTimeZone 和 systemTimeZone 有什么区别?

将 CSS 插入 UIWebView / WKWebView 中加载的 HTML

isEqualTo: 和 isEqual 之间的区别:

重复符号 _OBJC_METACLASS_$_ClassName

Crashlytics iOS - 记录捕获的异常

如何在 iPhone 上显示来自 API 的 HTML 文本?

CFURLCopyResourcePropertyForKey 失败,因为通过 URL 没有方案

Objective-C 中的 super 到底是什么?

我应该使用 NSUserDefaults 还是 plist 来存储数据?

带有块的 Objective-C 延迟动作

HTML 内容适合 UIWebview 而无需缩小

添加/删除带有动画的 UITableViewCell?

在 switch 语句中使用 NSString

-[MyClassName copyWithZone:] 无法识别的 Select 器发送到实例

NSHTTPCookieStorage 状态未在应用退出时保存.那里有任何明确的知识/文档吗?

@class 在 Objective-C 中做了什么?

如何让 UITextView 检测网站、邮件和电话号码的链接

如何获得设备的比例因子?