2

私はかなり単純なことをしようとしていますが、それを行うための最良の方法がわかりません。私は 2 つのセルを持つ uitableview を持っています。セルは、nsmanageobject の日付プロパティにマップされます。nsmanagedobject には依存プロパティがあります。これは、今日の日付と選択された日付の間の日数の差です。この値は、ビューの読み込み時に 2 番目のセルに表示されます。

問題は、ユーザーが最初のセルの日付を変更すると、2 番目のセルが自動的に更新されないことです。

まず、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基本的にその変更をグローバルまたはコアデータに保存すると思います。その構成でtableViewをリロードするだけで問題が解決するはずです。

あなたの場合、 を実装しているので、そのオブジェクトの値を変更すると起動すると思いますNSFetchedResultsControllerobjectDidChangeAtableView 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 に答える