ios - UIActivityViewController 在 iOS 8 iPad 上崩溃

标签 ios objective-c swift uiactivityviewcontroller

我目前正在使用 Xcode 6(Beta 6)测试我的应用程序。 UIActivityViewController 在 iPhone 设备和模拟器上运行良好,但在 iPad 模拟器和设备 (iOS 8) 上崩溃并出现以下日志

Terminating app due to uncaught exception 'NSGenericException', 
reason: 'UIPopoverPresentationController 
(<_UIAlertControllerActionSheetRegularPresentationController: 0x7fc7a874bd90>) 
should have a non-nil sourceView or barButtonItem set before the presentation occurs.

我正在为 iOS 7 和 iOS 8 使用 iPhone 和 iPad 的以下代码

NSData *myData = [NSData dataWithContentsOfFile:_filename];
NSArray *activityItems = [NSArray arrayWithObjects:myData, nil];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:nil applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard];
[self presentViewController:activityViewController animated:YES completion:nil];

我的另一个应用程序也发生了类似的崩溃。你能指导我吗? iOS 8 中的 UIActivityViewController 有什么变化吗?我查过了,但我没有找到任何关于此的内容

最佳答案

在 iPad 上,事件 View Controller 将使用新的 UIPopoverPresentationController 显示为弹出框。 ,它要求您使用以下三个属性之一为弹出框的呈现指定一个 anchor :

为了指定 anchor ,您需要获取对 UIActivityController 的 UIPopoverPresentationController 的引用并设置以下属性之一:

if ( [activityViewController respondsToSelector:@selector(popoverPresentationController)] ) { 
// iOS8
 activityViewController.popoverPresentationController.sourceView =
parentView;
 }

关于ios - UIActivityViewController 在 iOS 8 iPad 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644054/

相关文章:

ios - 我真的必须明确支持 iPhone 6 和 iPhone 6 Plus 屏幕吗?

swift - 协助 Swift 中的变量

ios - 类型 'ViewController' 不符合协议(protocol) 'UISearchResultsUpdating'

iphone - 避免 iPhone 应用程序崩溃的提示和技巧

ios - sendbird sdk自动重连

iphone - iOS 如何告诉 App Delegate 从当前 View 呈现新 View

ios - 无法使用 AutoLayout 设置 UICollectionViewCell 的宽度

ios - 为什么我的 Auth0 token 从 iOS 发送到 node.js 服务器时总是返回无效?

javascript - Cordova/PhoneGap 照片质量设置为 1,仍然是高质量

ios - 在 swift 4 中自动关闭 View Controller