0

UICollectionViewで選択した複数のオブジェクトを自分の から削除しようとすると問題が発生しますUIActivity

FilesCollectionController.h

@property(nonatomic,weak) IBOutlet UICollectionView *collectionView;

このコレクション ビューでは、ファイル パスを使用して画像を表示します。

FilesCollectionController.m

...  
ActivityTrash *trash = [[ActivityTrash alloc] init];
NSMutableArray *customActivities = [[NSMutableArray alloc] initWithObjects:trash, nil];

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsSelected applicationActivities:customActivities];
UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:controller];
...
// Present the Navigation controller
[self presentViewController:destNav animated:YES completion:nil];

ActivityTrash.h

@interface ActivityTrash : UIActivity 

@property(nonatomic,retain) NSMutableArray *objectsToDelete;

@end

ActivityTrash.m

@implementation ActivityTrash

- (NSString *) activityTitle {
    return @"Delete";
}

- (UIImage *) activityImage {
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        return [UIImage imageNamed:@"ipadTrash"];
    }
    else
    {
        return [UIImage imageNamed:@"iphoneTrash"];
    }
}

- (BOOL) canPerformWithActivityItems:(NSArray *)activityItems
{
    return ([activityItems count] != 0);
}

- (void) prepareWithActivityItems:(NSArray *)activityItems
{
    self.objectsToDelete = [[NSMutableArray alloc] init];
    for (NSURL *url in activityItems) {
        [self.objectsToDelete addObject:[url path]];
    }
}

- (UIViewController *) activityViewController
{
    return nil;
}


- (void)performActivity {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Delete file(s)"
                                                    message:@"Are you sure ?"
                                                   delegate:self
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"OK", nil];
    alert.alertViewStyle = UIAlertViewStyleDefault;
    [alert show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    // If the user pressed ok, delete each image which path is in objectsToDelete
    if (buttonIndex == 1) {
        for (NSString *pathImage in self.objectsToDelete) {
            [DocumentManager deleteImageWithPath:pathImage];
        }
    }
    [self activityDidFinish:YES];
}

ファイルは実際に削除されます。しかし、問題は、終了した直後に[self.collectionView reloadData]FilesCollectionControllerUIActivity呼び出したいため、コレクション ビューがすぐに更新されることです...

4

1 に答える 1