在Tableview中替换和编辑对象。 (目标C)

时间:2014-10-01 08:19:35

标签: ios objective-c uitableview nsmutablearray

我在设置表格视图时遇到问题。 我有一个TableView" Entries"哪里会有我的参赛作品清单。 我有一个秒TableView" AddEntry"我有几个Textfields,它将定义一个Object的属性。按下"添加"对象名称显示在"条目" TableView中。

我的问题出现了:我希望以后能够通过点击它来编辑Objects属性。

例如:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    if ([[segue identifier] isEqualToString:kEditSegueIdentifier]) {

    edited = YES;

    AddEntry *controller = [[[segue destinationViewController] viewControllers] objectAtIndex:0];

    EntryObject *entry = self.entryObjectArray[self.indexPathInt];

    controller.property1 = entry.property1;
    controller.property2 = entry.property2;
    controller.property3 = entry.property3;

    }
}

稍后将填写" AddEntry"中的文本字段。使用所选对象属性查看。到目前为止一切都很好。

如果我现在(有或没有更改对象属性),请单击"完成"将调用此方法,它将创建一个新的Row,其中包含一个新创建的Object,它与我想要编辑的对象完全相同。

- (void)saveEntryDetails:(EntryObject *)entry {

if (edited == YES) {

    [self.entryObjectArray replaceObjectAtIndex:self.indexPathInt withObject:entry];
}

[self.entryObjectArray addObject:entry];

if (self.entryObjectArray.count < 1) {

        NSArray *indexPaths = @[[NSIndexPath indexPathForRow:[self.entryObjectArray count] inSection:0]];
    [self.tableView insertRowsAtIndexPaths:indexPaths
                          withRowAnimation:UITableViewRowAnimationFade];
}
else {
NSArray *indexPaths = @[[NSIndexPath indexPathForRow:[self.entryObjectArray count]-1 inSection:0]];
    [self.tableView insertRowsAtIndexPaths:indexPaths
                          withRowAnimation:UITableViewRowAnimationFade];
  }
}

我如何区分&#34;对象是新创建的&#34;和&#34;对象已编辑&#34;?

另外如何在数组中替换已编辑的对象?

1 个答案:

答案 0 :(得分:0)

创建一个entryObjectCompareArray作为原始数组,然后与entryObjectArray进行比较,

NSMutableArray *leftArray = [NSMutableArray arrayWithArray:entryObjectCompareArray];
[leftArray removeObjectsInArray:entryObjectArray];

leftArray将是已编辑的对象,其他是新创建的。