我有一个显示模型对象数据的基本表视图控制器,我们称之为 object userInfo
。每个单元格都连接到不同的视图控制器,用户可以在其中修改userInfo
属性。一个属性是数组names
。数组中的每个name
都显示在单个表格部分中。名称单元格连接到一个简单的视图控制器,其中包含一个文本字段来编辑name
或添加name
到数组中。
这是一个非常简单的概念,但我看到了几种不同的实现方式。我想使用最符合 MVC 设计的最干净的方法。
在我当前的实现中 prepareForSegue
if ([segue.identifier isEqualToString:@"EditName"]) {
EditNameVC *controller = segue.destinationViewController;
controller.userInfo = self.userInfo;
NSArray *names = [self.userInfo objectForKey:@"names"];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDictionary *nameInfo = [names objectAtIndex:indexPath.row];
NSString *name = [nameInfo objectForKey:@"title"];
if (name) {
controller.name = name;
}
}
我通过isEditing
BOOL 告诉 EditNameVcnameInfo
字典将被替换而不是添加到array
. 这在目标视图控制器中提出了一个问题。如果编辑 a name
,vc如何知道替换字典的索引?我应该在 EditNameVC 中创建一个私有属性oldNameObject
,遍历每个nameInfo
insnames
并使用replaceObjectIdenticalTo
吗?我应该通过 indexPath 吗?任何一种选择都显得草率。
作为另一个考虑,EditTableVC 是否应该对模型对象一无所知,只是调用主表视图控制器的委托,然后修改模型对象?