你无法更改内置的iOS UIActivityViewController项目,如Mail、Facebook和Twitter。为了在UIActivityViewController中实现自定义操作,您必须为每个自定义活动创建一个自定义的UIActivity子类。这是一个示例:
- (UIActivityViewController *)getActivityViewController {
MyFeedbackActivity *feedbackActivity = [[MyFeedbackActivity alloc] init];
MyFacebookActivity *facebookActivity = [[MyFacebookActivity alloc] init];
MyMailActivity *mailActivity = [[MyMailActivity alloc] init];
NSArray *applicationActivities = @[feedbackActivity, facebookActivity, mailActivity];
NSArray *activitiesItems = @[@"A string to be used for MyFeedbackActivity", @"A string to be used for MyFacebookActivity", @"A string to be used for MyMailActivity"];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activitiesItems applicationActivities:applicationActivities];
activityVC.excludedActivityTypes = [[NSArray alloc] initWithObjects:
UIActivityTypeCopyToPasteboard,
UIActivityTypePostToWeibo,
UIActivityTypePostToFacebook,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeCopyToPasteboard,
UIActivityTypeMail,
UIActivityTypeMessage,
UIActivityTypeAssignToContact,
nil];
return activityVC;
}
这是一个UIActivity的子类示例,介绍了您需要覆盖的方法的文档,以处理自定义数据/操作。
#import "MyFeedbackActivity.h"
@implementation MyFeedbackActivity
- (NSString *)activityType {
return @"MyFeedbackActivity";
}
- (NSString *)activityTitle {
return @"Feedback";
}
- (UIImage *)activityImage {
return [UIImage imageNamed:@"feedback"];
}
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
return YES;
}
- (UIViewController *)activityViewController {
}
- (void)prepareWithActivityItems:(NSArray *)activityItems {
}
-(void)performActivity {
}
@end