Gly*_*ton 5 iphone cocoa-touch core-data uiviewcontroller modalviewcontroller
大约一个月前,我和我的妻子提出了一个关于iPhone应用程序的好主意,所以我开始考虑应用程序如何从用户角度运行,大约一周前我第一次打开XCode并开始开发.
在我开始关注应用程序的编写之前,我想确保在脑海中清楚地了解一些关键概念,特别是与架构相关的概念.
仅供参考,作为一项原则,我想尝试以编程方式(特别是用户界面)创建我的应用程序,以便我能够彻底了解正在发生的事情.稍后我可能会使用IB作为加速UI开发的工具(目前适用,因为我使用的是TableView而不是静态视图).
查看控制器
因此,UINavigationControllers通常不是子类,并且在AppDelegate中创建为属性,并且是MainWindow.xib的主要"子视图".
UINavigationController控制一堆视图,通常使用根视图控制器启动.
导航控制器通常被引用并从当前/顶视图控制器中作为[self navigationcontroller]发送消息,它是UIViewController父类的只读属性.
核心数据
Managed对象上下文是访问模型中数据的主要控制点,但通常不直接使用,而是使用fetch请求返回数据对象的数组,集或字典,然后由视图控制器使用它们来呈现和操作数据.
上下文作为app委托中的属性创建,然后在启动时传递给根视图控制器,然后在告知导航控制器更改视图之前将其传递给堆栈中的后续视图(例如,当单元格被点击时).
所以我花了一个星期才到达这里,我可以创建我的模型,用数据填充它并将其显示在表格视图上但是当你想要编辑数据时,我无法找到很多关于模态视图的信息,特别是如何设计模态视图(如果与普通视图有任何特定的差异)?
另外,我不完全确定数据的整个"绑定",以查看对象的功能以及如何以编程方式执行此操作?
非常感谢您的意见和建议.
当使用presentModalViewController:animated 显示视图时,该视图将变为模态视图。您可以在呈现模态视图之前传递要编辑的模型。
DetailViewController dvc = ...;
dvc.model = model;
dvc.delegate = self; // if you want to use a delegate pattern.
[self presentModalViewController:dvc animated:YES];
Run Code Online (Sandbox Code Playgroud)
由于您要编辑的模型在模态视图控制器中可用,因此您可以在 viewDidLoad 中设置值。iOS 平台上没有可用的数据绑定,这意味着您必须手动更新视图和模型。
- (void)viewDidLoad {
[super viewDidLoad];
self.someTextField.text = self.model.someText;
}
Run Code Online (Sandbox Code Playgroud)
使用模态视图时需要考虑的是,您必须提供一种方法来关闭它。例如,顶部有一个带有“取消”和“保存”按钮的导航栏。关闭模态视图控制器是使用以下命令完成的:
[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
可以从模态视图控制器中关闭模态视图,但这也意味着这样的模态控制器必须能够保存有问题的模型。我个人会使用对呈现控制器的回调,让它知道是保存还是取消以及处理模式视图的关闭。这可以使用委托模式来完成。因此,当用户点击“保存”时,您可以更新模型,然后通知委托人。
- (IBAction)save:(id)sender {
self.model.someText = self.someTextField.text;
[self.delegate detailViewControllerDidSave:self];
}
Run Code Online (Sandbox Code Playgroud)
在演示者中有一个类似的方法:
-(void)detailViewControllerDidSave:(DetailViewController *)controller {
// save the model
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |