標準 SDKのMFMailComposeViewControllerおよびその他のいくつかのパターンに従う必要があると思います。つまり、フレームワークはUIViewController のサブクラスであるpublicクラスを提供します。
#import <MyFramework/MyFrameworkViewController.h>
@interface CustomerViewController : UIViewController <MyFrameworkViewControllerDelegate>
@end
- (IBAction)pressedShowFrameworkVC:(id)sender {
MyFrameworkViewController *frameworkVC = [[MyFrameworkViewController alloc] init];
// your framework init can init from your bundle's nib
frameworkVC.delegate = self;
[self presentViewController:frameworkVC animated:YES completion:^{}];
}
フレームワーク vc は、ユーザーが終了すると、それ自体を閉じます。
// MyFrameworkViewController.m
[self dismissViewControllerAnimated:YES completion^{
[self.delegate frameworkVC:self didFinishWithStuff:@"Done"];
}];
あなたの顧客はこれを実装しています...
- (void)frameworkVC:(MyFrameworkViewController *)frameworkVC didFinishWithStuff:(NSString *)objectDescribingCompletionState {
}
編集- あなたのフレームワークが顧客アプリのためにビューコントローラー以外の作業を行う必要があるとします。NSObject (または NSURLConnection など) のサブクラスを別のパブリック クラスとして提供することもできます。
// CustomerViewController.m
#import <MyFramework/MyFrameworkWorkerBee.h>
- (IBAction)pressedMakeMyFrameworkDoSomethingUseful:(id)sender {
MyFrameworkWorkerBee *workerBee = [[MyFrameworkWorkerBee alloc] init];
[workerBee fetchStuffFromTheWebWithCompletion:^(id result) {
// now present results
MyFrameworkViewController *frameworkVC = [[MyFrameworkViewController alloc] init];
frameworkVC.delegate = self;
frameworkVC.resultsToPresent = results;
[self presentViewController:frameworkVC animated:YES completion:^{}];
}];
}