【发布时间】:2011-11-24 16:21:50
【问题描述】:
我有一个我怀疑很常见的场景,我在回答其他类似问题时发现了各种想法,包括设置 IBOutlets、将 NSmanagedobjects 作为属性传递以及只使用一个视图控制器但交换视图,但我不确定哪个是为我的解决方案实施的最佳想法。
我有一个具有典型模型的 iOS/iphone 应用程序。 UITabBarController 包含多个 UINavigationControllers。
在其中一个导航控制器中,我有一个带有 tableView 的视图控制器。这个 tableView 是从获取的核心数据实体中填充的,称为“标签”。当我使用 UIBarButtonItem (Add) 设置 tableView 时,添加按钮的行为如下:我需要它为该实体创建一个新的“标签”对象,并用一些已知数据填充该对象,然后提示用户钻取向下 3 级分类(区域 -> 区域 -> 主题)到达一个主题对象。然后我需要将该“主题”对象添加到原始新添加的“标签”对象的关系中(堆栈下方的 3 个视图)。 - 希望这很清楚。
(有很多代码我不确定要呈现哪些位,所以我现在用主要的 sn-p 来描述,一定要让我知道你想看到的任何特定代码。)
- (void)addTag {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:@"(untitled)" forKey:@"tagID"];
NSError *error;
if (![context save:&error])
NSLog(@"Error saving entity: %@", [error localizedDescription]);
ChooseRegion *aView = [[[ChooseRegion alloc] init] autorelease];
aView.theTag = newManagedObject;
[self.navigationController pushViewController:aView animated:YES];
}
您可以看到我已经创建了对象,将其中一个属性设置为值,保存并将对象传递给下一个视图 (chooseRegion),这是 3 个视图中的第一个。在每个 didSelectRowAtIndexPath 代码上,将选定的行和这个“标签”对象传递给下一个视图,我不确定这是否正确,因为我不确定当我到达第三个视图的主题对象时该怎么做? ??我迷路了。
给猫剥皮总是不止一种方法,但我应该从什么方法来解决这个问题。我应该将“标签”对象向前传递并将其保存在第三个视图中,还是将所选主题传回并将其保存在创建“标签”对象的原始视图中?
非常感谢。
【问题讨论】:
标签: objective-c core-data uiviewcontroller properties uinavigationcontroller