
UIActivityVIEwController *activityVIEwController = [[UIActivityVIEwController alloc] initWithActivityItems:self.downloadData applicationActivitIEs:self.applicationActivitIEs];解决方法 您需要为activityItems使用自定义数据,并在协议UIActivityItemSource中实现方法.跟着它:
file:ShareData.h
#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>@interface ShareData : NSObject<UIActivityItemSource>@property (nonatomic,strong) NSData *data;@property (nonatomic,strong) NSURL *url;@end
文件:ShareData.m
#import "ShareData.h"@implementation ShareData-(ID)activityVIEwControllerPlaceholderItem:(UIActivityVIEwController *)activityVIEwController { return self.data;}-(ID)activityVIEwController:(UIActivityVIEwController *)activityVIEwController itemForActivityType:(Nsstring *)activityType { if ([activityType isEqualToString:UIActivityTypeAirDrop]) { return self.data; } return self.url;}-(Nsstring*)activityVIEwController:(UIActivityVIEwController *)activityVIEwController subjectForActivityType:(Nsstring *)activityType { return @"share data";}-(Nsstring*)activityVIEwController:(UIActivityVIEwController *)activityVIEwController dataTypeIDentifIErForActivityType:(Nsstring *)activityType { if ([activityType isEqualToString:UIActivityTypeAirDrop]) { return @"test"; } return nil;}@end 并且,在社交媒体上分享内容:
ShareData *share = [ShareData new];share.data = downloadData; // one of your downloadDatashare.url = downloadURL; // url for the downloadData UIActivityVIEwController *activityVIEwController = [[UIActivityVIEwController alloc] initWithActivityItems:@[share] applicationActivitIEs:nil];
上面的代码已经过测试,它适用于DOCX和XLSX.
源演示在这里:https://github.com/ocarol/UIActivityViewControllerDemo
总结以上是内存溢出为你收集整理的ios – 无法使用UIActivityViewController以NSDATA的形式共享Docx全部内容,希望文章能够帮你解决ios – 无法使用UIActivityViewController以NSDATA的形式共享Docx所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)