0

私の最初のビューはtableView(RootViewController)です。私の 2 番目のビューは、データが RootViewController から渡されるオブジェクトに依存する tableView です。私の 3 番目のビューは、textField を持つビューです。また、2 番目のビューが取得した同じオブジェクトも取得します。その textField は、渡されたオブジェクトの名前を保持します。変更して保存し、2 番目のビューに戻ると、更新された情報が表示されません。しかし、最初のビューに移動すると、更新されたことが示され、2 番目のビューも更新されます。

2番目のビューのviewWillAppearメソッドで使用[self.tableView reloadData]; しましたが、うまくいきません。

保存すると言うときは、次のようにします。

if (![context save:&error])
// error stuff

(コンテキストは、didSelectRowAtIndexPath を介してビューにも渡されます)

これはいらいらするほど単純でなければなりません。少なくともそう願っています。ありがとう。

4

2 に答える 2

1

2 番目のビューで、次の通知を実装します。

- (void)contextDidSave:(NSNotification *)notification
{

  [managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
  [self.tableView reloadData];

}

viewDidLoadメソッドに以下を入れます。

[[NSNotificationCenter defaultCenter] addObserver:self
                                selector:@selector(contextDidSave:)
                                                 name:@"ContextDidSave" object:nil];

に以下を入れますdealloc

[[NSNotificationCenter defaultCenter] removeObserver:self];

テキストフィールドにデータを保存するときは、コンテキストを保存した直後に次の操作を行います。

[[NSNotificationCenter defaultCenter] postNotificationName:@"ContextDidSave" object:managedObjectContext];

これはうまくいくはずです。

于 2010-07-14T06:07:22.130 に答える
0

2 番目のビューでは、viewDidLoad メソッドではなく、viewWillAppear メソッドにデータをロードするコードを配置します。

于 2010-07-14T18:02:03.320 に答える