如何实现一个uitableviewcell,其值来自另一个uitableviewcell

时间:2012-04-07 07:24:19

标签: iphone ios uitableview nsfetchedresultscontroller

我正在尝试做一些相当简单的事情,但我看不出最好的方法。我有一个带有两个单元格的uitableview,第一个在contextview中有一个uitextfield,输入视图设置为uidatepicker。单元格映射回nsmanageobject日期属性。 nsmanagedobject具有依赖属性,该属性是今天日期与所选日期之间的天数差异。加载视图时,此值显示在第二个单元格中。

问题在于,当用户更改第一个单元格中的日期时,第二个单元格不会自动更新。

首先我想我可以在uitableview上调用setNeedsDisplay。但这似乎相当沉重。

所以我一直在阅读KVO,但我还没有找到解决问题的好例子。

我正在为我的tableviews使用fetchresultscontrollers。我试图实现一个密钥路径依赖关系,如iPhone文档中所示,但这并没有成功。

例如......

+ (NSSet *)keyPathsForValuesAffectingDaysRemaining
{
NSLog(@"keyPathsForValuesAffectingDaysRemaining");
return [NSSet setWithObjects:@"dateOfOccasion", nil];
}

-(NSNumber *)daysRemaining {

    return [self.dateOfOccasion daysFromNow]; //simple calendar calc.  
}

有人能指出我正确的方向,找到一个相对简单的问题的适当解决方案。

谢谢,

加里

2 个答案:

答案 0 :(得分:0)

我认为战略性地实施[[self tableView] reloadData]应该可以解决问题。只要您在cell1中更改对象,我就会假设您基本上在全局或Coredata中保存更改。只需在该配置中重新加载tableView就可以解决问题。

在您的情况下,由于您正在实施NSFetchedResultsController,我认为当您更改该对象的值时会激活objectDidChangetableView reloadData将是一个不错的实现!

答案 1 :(得分:0)

如果您有修改后的值,则可以重新加载该行以更新内容。您可以在更新行的值

后在KVO方法中重新加载行
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);