gpt4 book ai didi

ios - 无法使用 UIActivityViewController 以 NSDATA 的形式共享 Docx

转载 作者:技术小花猫 更新时间:2023-10-29 11:24:11 25 4
gpt4 key购买 nike

我正在使用 UIWebView 打开一个 Docx 文件,该文件采用从另一个 Controller 传递到 webview 的 NSDATA 形式。我也在使用 UIAcvitityController 在社交媒体上分享内容。它适用于图像类型和 PDF 类型,但不适用于 DOCX 和 XLSX。我需要在这里做什么特别的事情吗?

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.downloadData applicationActivities:self.applicationActivities];

最佳答案

您需要为 activityItems 使用自定义数据,并在协议(protocol) UIActivityItemSource 中实现方法。跟随它:

文件: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 downloadData
share.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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38610689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com