Ich arbeite an einer iOS-App, in der ich hinzufügen möchten MULTIPLE Anhänge zu einer E-Mail mit UIActivityItemProvider. Ich möchte es mit UIActivityItemProvider tun, weil ich nicht den Aufwand für die Verarbeitung des Datensatzes übernehmen möchte, bevor ich den UIActivityViewController für den Benutzer anzeigen. Wenn ich ein Bild mit einem NSData-Objekt oder einem NSURL-Objekt an das "url" -Element des zurückgegebenen Objekts übergebe, wird das eingebettete Bild als gut angezeigt. Wenn ich ein Array dieser Objekte übergebe, taucht nichts auf. Ich glaube, dass das Übergeben eines Arrays funktioniert, wenn ich den ActivityItems-Parameter beim Initialisieren eines NSActivityViewController verwende, aber das möchte ich auch nicht, weil ich die verzögerte Verarbeitung, die mit dem UIActivityItemProvider verfügbar ist, nutzen möchte. Unten ist mein CodeWie Sie mehrere E-Mail-Anhänge mit UIActivityItemProvider hinzufügen
@implementation NoteRecordActivityProvider
- (id)initWithPlaceholderItem:(id)placeholderItem
{
//Initializes and returns a provider object with the specified placeholder data
return [super initWithPlaceholderItem:placeholderItem];
}
- (id)item
{
// //Generates and returns the actual data object
NSData *imageFile = [[NSData alloc]init];
NSString *imageFileName;
NSURL *url;
NSString* exportPath;
NSMutableArray* imageArray = [[NSMutableArray alloc]initWithCapacity:0];
NSInteger photoCount = self.noteRecord.photoCount;
for (NSInteger i = 0; i < photoCount; i+=1)
{
//Add File Attachment
PhotoObject *po = (PhotoObject*)[self.noteRecord photoObjects:i];
NSString *photoGUID = [(PhotoObject*)[self.noteRecord photoObjects:i]GUID];
imageFile = ImageDataReturningMethodHere;
imageFileName = [[NSArray arrayWithObjects:@"Image", [NSString stringWithFormat:@"%ld", (long)i], @".png", nil] componentsJoinedByString:@""];
exportPath = [[FileSystemProvider exportPath] stringByAppendingPathComponent:imageFileName];
[imageFile writeToFile:exportPath atomically:YES];
url = [NSURL fileURLWithPath:exportPath];
[imageArray addObject:url];
}
if ([self.activityType isEqualToString:UIActivityTypeMail])
return imageArray;
else
return nil;
}
- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return @{@"body":@"", @"url":[[NSURL alloc]init]};
}
-(NSString *) activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType {
return [NSString stringWithFormat:@"Attached Record: %@", self.noteRecord.title];
}
@end
Gleiche Ausgabe h ehe... –