我正在尝试确定一种设计模式。我有一个应用程序,用户可以在其中向核心数据数据库添加一个条目。他们还应该能够在以后编辑该条目。两个 View 基本上显示相同的数据,只有一个用于编辑已添加的内容。
我不确定我是否应该有两个非常相似的独立 View Controller ,或者我是否应该使用某种继承来设置它,或者是否还有其他一些我没有想到的想法。
非常感谢您的意见。
最佳答案
我遇到了一个类似的项目要解决,最终使用相同的 UIViewController
来完成这两个操作。这两个用例在本质上是相同的:用户输入信息然后保存。数据的验证是一样的,保存是一样的,呈现是一样的。它们仅在您的模型对象是否已经存在时有所不同。考虑以下示例:
.h文件:
@interface WHItemViewController : UITableViewController
// This is the only attribute we really need to expose in our header
// so that the presenting view controller can set the model object when editing
@property (nontatomic, retain) WHItem* item;
@end
.m文件:
@interface WHItemViewController()
// Other 'private' properties and methods
- (void)didSelectSaveButton:(id)sender;
@end
@implementation WHItemViewController
- (void)viewDidLoad {
[super viewDidLoad];
if (self.item) { // setup the UI with the model object, if present.
self.fooText.text = self.item.foo;
self.barText.text = self.item.bar;
self.bazText.text = self.item.baz;
}
}
- (void)didSelectSaveButton:(id)sender {
if (!self.item) {
WHItem* item = nil;
// create a new instance from your managed object context
// and set it to the item property
self.item = item;
}
self.item.foo = self.fooText.text;
self.item.bar = self.barText.text;
self.item.baz = self.bazText.text
NSError* error = nil;
[WHDataAccess sharedInstance].managedObjectContext save:&error];
// Error handling, etc.
}
// Other methods
@end
此 View Controller 的唯一目的是创建用于编辑和保存模型对象数据的表示。
关于iphone - 添加 ViewController 与编辑 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918346/