0

我正在使用 UIActivityViewController 的子类来显示自定义 UIActivity。

当控制器显示时,我得到

Unknown activity items supplied: (
    "<MyClass: somehash>"
)

在我的日志中。

MyClass 是 NSObject 的子类,并通过点击我的 UIActivity 传递给新的 ViewController。

我试图在 MyClass 上实现协议 UIActivityItemSource,但它没有解决问题。

MyClass 对象作为activityItems参数在数组中传递给 [UIActivityViewController init] ,这应该不是问题,因为文档只说:

要对其执行活动的数据对象数组。数组中的对象类型是可变的,并且取决于您的应用程序管理的数据。例如,数据可能由一个或多个表示当前所选内容的字符串或图像对象组成。

编辑:

这是我可以分享的代码:

MyClass *myDataObject = some data...

...

NSMutableArray *activityItems = [NSMutableArray arrayWithCapacity:3];
[activityItems addObject:NSLocalizedString(@"default_activity_message", nil)];
[activityItems addObject:someURL];
[activityItems addObject:myDataObject];

NSMutableArray *customActivities = [NSMutableArray arrayWithCapacity:1];
[customActivities addObject:[MyActivity new]];

MyActivityViewController *activityViewController = 
    [[MyActivityViewController alloc] initWithActivityItems:activityItems 
                                      applicationActivities:customActivities];

[self presentViewController:activityViewController animated:YES completion:nil];
4

1 回答 1

0

你应该继承 UIActivity,而不是 UIActivityViewController。然后传入子类applicationActivities:...

// Create activity view controller
UIActivityViewController* vc = [[UIActivityViewController alloc] initWithActivityItems:@[myDataItem] applicationActivities:@[myActivityAction]];
于 2015-02-24T13:40:27.127 回答