RDActivityViewController
This is a simple override of UIActivityViewController which makes it easier to set multiple items for each UIActivityType.
Install / Use
/learn @rdougan/RDActivityViewControllerREADME
RDActivityViewController
This is a simple override of UIActivityViewController which makes it easier to set multiple items for each UIActivityType.
Usage
-
Add all files into your Xcode project.
-
Import
RDActivityViewController.hinto your project:#import "RDActivityViewController.h"; -
Set your class as a
RDActivityViewControllerDelegatedelegate:... @interface MyClass : NSObject <RDActivityViewControllerDelegate> ... -
Implement the required
activityViewController:activityViewController itemsForActivityType:activityTypemethod in the delegate. You should always return anNSArrayof activityItems:- (NSArray *)activityViewController:(NSArray *)activityViewController itemsForActivityType:(NSString *)activityType { if ([activityType isEqualToString:UIActivityTypeMail]) { return @[ @"This is the message which appears", @"...in the mail sharing dialog.", [UIImage imageName:@"an-image.png"] ]; } else { return @[@"Default message"]; } } -
And finally, create the RDActivityViewController:
RDActivityViewController *viewController = [[RDActivityViewController alloc] initWithDelegate:self];
Using with custom application activities
To use a custom activity, you can call [[RDActivityViewController alloc] initWithDelegate:self maximumNumberOfItems:numItems applicationActivities:appActivities placeholderItem:defaultPlaceholder];
This lets you share items that might not be sharable with particular activity types (e.g. some UIActivity implementations may only accept NSURL, AVAsset, etc.. objects.)
For example, using TUSafariActivity and ARChromeActivity to open an item in Safari or Google Chrome:
UIActivity *safariActivity = [[TUSafariActivity alloc] init];
UIActivity *chromeActivity = [[ARChromeActivity alloc] init];
RDActivityViewController *viewController = [[RDActivityViewController alloc] initWithDelegate:viewControllerDelegate maximumNumberOfItems:10 applicationActivities:@[safariActivity, chromeActivity] placeholderItem:[NSURL URLWithString:@"http://github.com"]];
Of course, you can still replace the placeholder item in your delegate method.
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
