2

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

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

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

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

我正在为我的表格视图使用 fetchresultscontrollers。我试图实现一个关键路径依赖项,如 iPhone 文档中所示,但这并没有成功。

例如...

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

-(NSNumber *)daysRemaining {

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

有人可以为我指出一个相对简单问题的适当解决方案的正确方向。

谢谢,

加里

4

2 回答 2

0

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

在您的情况下,由于您正在实现NSFetchedResultsController,因此我假设objectDidChange您更改该对象的值时会触发。AtableView reloadData将是一个很好的实现!

于 2012-04-07T07:57:12.670 回答
0

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

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
于 2012-04-07T08:06:23.050 回答