gpt4 book ai didi

ios - 框架、委托(delegate)和 View Controller

转载 作者:行者123 更新时间:2023-11-29 04:02:31 27 4
gpt4 key购买 nike

我正在为第三方开发人员构建一个框架。我构建的方式是我创建了一个静态 iOS 项目,并按照列出的步骤 here 进行操作。 .现在我将以下内容添加到该框架示例中:

向框架项目添加了 ViewController

该项目的主要公共(public)类有一个第三方开发人员将实现的委托(delegate)

现在我需要实现的是,例如,第三方开发人员使用我的框架并将委托(delegate)设置为他们的应用程序的类。我希望我的框架做的是在他们的 View 顶部呈现一个 View Controller ,显示所需的内容内容。原来框架项目中的主类是一个NSObject类,不支持presentModalViewController等方法

那么您能否建议一种实现上述目的的方法,即我的框架应该在委托(delegate) View 之上呈现一个 View Controller 。另外,我正在框架项目中使用界面生成器创建 View Controller 。请建议这是否是正确的方法。如果没有,您认为我如何设计在调用 View 之上所需的 View 布局 - 纯粹通过代码?

最佳答案

我认为你应该遵循 MFMailComposeViewController 的模式以及标准 SDK 中的其他几个。这意味着您的框架将提供公共(public)类,它是 UIViewController 的子类。

#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 {

}

编辑 - 假设您的框架还需要为客户应用程序执行一些与 View Controller 无关的工作。它仍然可以提供 NSObject(或 NSURLConnection 或其他)的子类作为另一个公共(public)类。

// 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:^{}];
}];
}

关于ios - 框架、委托(delegate)和 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15686487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com