iphone - 添加 ViewController 与编辑 ViewController

标签 iphone ios core-data

我正在尝试确定一种设计模式。我有一个应用程序,用户可以在其中向核心数据数据库添加一个条目。他们还应该能够在以后编辑该条目。两个 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/

相关文章:

iphone - 将数据加载到核心数据模式中

iphone - xcode 4.2项目在iPhone上运行|真实设备

iphone - 非常大的 sqlite 数据库副本

ios - 在 swift 项目的 Storyboard中使用 Objective-C 类作为自定义类

ios - 如何在 NSManagedObject iOS 上进行嵌套排序

core-data - 如何为 CoreData 编写 NSPredicate 一对多关系

iphone - CALayer位置包含NaN : [nan -0. 5]

iPhone 应用程序进行语音通话

ios - 将 UiSlider 间隔设置为 0.5

javascript - 使用保存在iOS应用程序的沙箱(文档目录)中的.html、.js文件,这样我也可以在离线模式下打开html文件