gpt4 book ai didi

iphone - 有关 iPhone 应用程序结构的问题 - 核心数据、 View 、模态视图等

转载 作者:行者123 更新时间:2023-12-03 19:00:42 25 4
gpt4 key购买 nike

大约一个月前,我和妻子想出了一个关于 iPhone 应用程序的好主意,所以我开始从用户的角度思考该应用程序如何工作,大约一周前我第一次打开了 XCode并开始发展。

在我过于专注于应用程序的编写之前,我想确保我脑子里清楚一些关键概念,特别是与架构相关的概念。

仅供引用,作为一个原则,我想尝试以编程方式创建尽可能多的应用程序(特别是 UI),以便我彻底了解正在发生的事情。稍后我可能会使用 IB 作为加速 UI 开发的工具(目前适用,因为我使用的是 TableView,而不是静态 View )。

View Controller

  • 因此,UINavigationController 通常不会被子类化,而是作为 AppDelegate 中的属性创建,并且是 MainWindow.xib 的主要“ subview ”。

  • UINavigationController 控制一堆 View ,通常由 Root View Controller 启动。

  • 导航 Controller 通常在当前/顶 View Controller 中作为 [self navigationcontroller] 进行引用和发送消息,它是 UIViewController 父类的只读属性。

核心数据

  • 托管对象上下文是访问模型中数据的主要控制点,但通常不直接使用它,而是使用获取请求返回数据对象的数组、集合或字典,然后由 View Controller 来呈现和操作数据。

  • 上下文作为应用程序委托(delegate)中的属性创建,然后在启动时传递到 Root View Controller , Root View Controller 本身将其传递到堆栈中的后续 View ,然后告诉导航 Controller 更改 View (例如例如,当点击单元格时)。

所以我花了一周的时间才到达这里,我可以创建我的模型,用数据填充它并将其显示在 TableView 上,但是当您想要编辑数据时,我无法在模态视图上找到太多内容,具体如何设计模态视图(如果与普通 View 有任何具体差异)?

此外,我不完全确定数据的整个“绑定(bind)”以查看对象的作用以及如何以编程方式执行此操作?

非常感谢您提前提出的意见和建议。

最佳答案

当使用presentModalViewController:animated 显示 View 时,该 View 将变为模态视图。您可以在呈现模态视图之前传递要编辑的模型。

DetailViewController dvc = ...;
dvc.model = model;
dvc.delegate = self; // if you want to use a delegate pattern.
[self presentModalViewController:dvc animated:YES];

由于您要编辑的模型在模态视图 Controller 中可用,因此您可以在 viewDidLoad 中设置值。 iOS 平台上没有可用的数据绑定(bind),这意味着您必须手动更新 View 和模型。

- (void)viewDidLoad {
[super viewDidLoad];
self.someTextField.text = self.model.someText;
}

使用模态视图时需要考虑的是,您必须提供一种方法来关闭它。例如。顶部有一个带有“取消”和“保存”按钮的导航栏。关闭模态视图 Controller 是使用以下方法完成的:

[self dismissModalViewControllerAnimated:YES];

可以从模态视图 Controller 中关闭模态视图,但这也意味着这样的模态 Controller 必须能够保存有问题的模型。我个人会使用对呈现 Controller 的回调,让它知道是保存还是取消以及处理模态视图的关闭。这可以使用委托(delegate)模式来完成。因此,当用户点击“保存”时,您可以更新模型,然后通知委托(delegate)人。

- (IBAction)save:(id)sender {
self.model.someText = self.someTextField.text;
[self.delegate detailViewControllerDidSave:self];
}

在演示者中有一个类似的方法:

-(void)detailViewControllerDidSave:(DetailViewController *)controller {
// save the model
[self dismissModalViewControllerAnimated:YES];
}

关于iphone - 有关 iPhone 应用程序结构的问题 - 核心数据、 View 、模态视图等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088630/

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