我正在寻求澄清,我只是陷入困境。我希望我很亲密。提前感谢您的帮助。
设置
我有三个视图控制器:表视图控制器,第一个视图控制器和第二个视图控制器。表视图控制器有一个“新”按钮和表格单元格。新按钮连接到'addStuff'segue,而'editStuff'的表格单元格连接到第一个视图控制器。第一个视图控制器类似地设置了两个按钮通过segues'addMoreStuff'和'editMoreStuff'连接到第二个视图控制器。 有两个实体:'stuff'和'moreStuff'在模型中设置,具有NSManaged Object的自定义子类。有一对一的关系,反过来。 (来自Stuff的'moreStuff'关系,以及来自MoreStuff的'stuff'关系)。
有委托方法从第二个视图控制器返回到第一个视图控制器。
-(void)secondViewController:(SecondViewController *)controller didAddMoreStuff:(MoreStuff *)moreStuff;
-(void)secondViewController:(SecondViewController *)controller didEditMoreStuff:(MoreStuff *)moreStuff;
第一和第二个视图控制器中基本上都有textFields。第一个视图控制器textFields为'stuff'实体提供数据,第二个视图控制器textFields为'moreStuff'实体提供数据。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"editMoreStuff"]) {
// Make and instance of the destination view controller and set it to the destination view controller.
SecondViewController* svc = segue.destinationViewController;
svc.delegate = self;
// I want the moreStuff associated with the current stuff to populate.
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
MoreStuff* moreStuff = [MoreStuff moreStuffInManagedObjectContext:context];
savc.moreStuffToEdit = moreStuff;
}
else if ([segue.identifier isEqualToString:@"addMoreStuff"]) {
// Make and instance of the destination view controller and set it to the destination view controller.
// This is called when no moreStuff has been called before. Need to prohibit if it has been.
SecondViewController* svc = segue.destinationViewController;
svc.fetchedResultsController = self.fetchedResultsController;
svc.delegate = self;
//show moreStuff if it is available
}
}
问题1.如果将数据输入第一个视图控制器,然后激活“addMoreStuff”segue,则“stuff”数据尚未保存。此人将数据添加到第二个视图控制器textFields,然后点击'done'通过模板提供的'saveContext'样板文件方法保存'moreStuff'对象,然后返回到第一个视图控制器。现在,如果该人决定使用'editMoreStuff'segue返回第二个视图控制器,我如何使用'moreStuff'对象预填充textFields?
我认为在SecondViewController的viewDidLoad中它会是这样的,但没有快乐:
- (void)viewDidLoad {
[super viewDidLoad];
if (self.moreStuffToEdit != nil) {
self.firstTextField.text = self.moreStuffToEdit.first;
self.secondTextField.text = self.moreStuffToEdit.second;
}
}
问题2.在哪里/如何与'stuff'对象建立关系?我认为它是这样的:
stuffObject.moreStuff = moreStuffObject;
但我不确定何时这样做。谢谢大家。