ios - UIActivityViewController 崩溃,NSCFConstantString _beforeActivity 无法识别的选择器发送到实例

标签 ios ios6 uiactivityviewcontroller

我正在尝试使用 UIActivityViewController 将新的 iOS 6 共享功能添加到我的应用程序。我有一些想要分享的文本,如果他们选择电子邮件,我也想自动设置电子邮件的主题。

NSArray *activityItems = @[resultString];
NSLog(@"items=%@", activityItems);

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard];

UIActivityViewController *activityController =
    [[UIActivityViewController alloc] initWithActivityItems:activityItems
                                      applicationActivities:activities];

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:activityController];
    // the line above is where the error happens.
    [self.popover presentPopoverFromBarButtonItem:self.emailResultsButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
} else {
    [self presentViewController:activityController
                       animated:YES
                     completion:nil];
}

这是包含错误消息的代码输出:

[694:907] items=(
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas porttitor accumsan mi eu mollis. Fusce condimentum dictum lectus, eu ultrices urna vulputate eu."
)
[694:907] -[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8
[694:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString _beforeActivity]: unrecognized selector sent to instance 0x3ad971c8'
*** First throw call stack:
(0x35add2a3 0x37a1497f 0x35ae0e07 0x35adf531 0x35a36f68 0x361dc7a3 0x361dc52d 0x36067595 0x36434d31 0x3642fe07 0x2990b 0x361330ad 0x36133135 0x361330ad 0x3613305f 0x3613303d 0x361328f3 0x36132de9 0x3605b5f9 0x36048809 0x36048123 0x37bd15a3 0x37bd11d3 0x35ab2173 0x35ab2117 0x35ab0f99 0x35a23ebd 0x35a23d49 0x37bd02eb 0x3609c301 0x1ef9d 0x1ef30)
libc++abi.dylib: terminate called throwing an exception

我在装有 iOS6 的 iPad 2 上运行它。有什么想法吗?

编辑:如果我不提供事件数组,那么似乎一切正常。仍在缩小问题范围。

最佳答案

异常说明了一切:您正在传递一个字符串数组:

NSArray *acitivities = @[UIActivityTypeMail, UIActivityTypeMessage, UIActivityTypePrint, UIActivityTypePostToFacebook, UIActivityTypeCopyToPasteboard];

文档说该方法需要一个 UIActivity 对象列表:

applicationActivities

An array of UIActivity objects representing the custom services that your application supports. This parameter may be nil.

请注意,这是针对自定义 事件;例如如果您想在现有服务之外提供自己的 DropBox 集成。

编辑:至于事件类型,它们似乎只用于UIActivity.activityTypeUIActivityItemProvider.activityTypeUIActivityViewController.excludedActivityTypes-[UIActivityItemSource activityViewController:itemForActivityType:]

关于ios - UIActivityViewController 崩溃,NSCFConstantString _beforeActivity 无法识别的选择器发送到实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092397/

相关文章:

ios - 从 UIActivityViewController 关闭邮件后 UINavigationBar 消失

ios - 在 UIDocumentInteractionController 或 UIActivityViewController 中自动选择 Instagram

ios - 使用 UIActivityViewController 发送的 UIImage 的控制文件名

objective-c - 在 iOS 中切换 View

ios - Facebook 权限 - com.apple.accounts 错误 8

ios - 如何创建背景清晰的按钮

iphone - 是否可以使用以前的 SDK (iOS5) 构建适用于 iPhone 5 屏幕尺寸的应用程序?

iphone - 如何在 iOS 中制作自己的自定义日历

ios - SceneKit:相对于 body 的物理世界

ios - 我可以稍后更改包标识符吗