3

詳細ビューコントローラーで実行されたアクションに基づいて、アプリのマスター側でテーブルを更新できるようにしたいと思います。

この場合、左側(マスター)側に注文テーブルがあり、ドリルダウンして3つのレベルの注文(オープン、保留、送信済み)を表示します。ですから、注文のステータスを「変更」(保留にする、保留を解除する、送信するなど)した場合、それをマスター側に反映できるようにしたいと思います。何か案は?

私が試した詳細ビューコントローラのアクションボタンから:

1.1。

[[appDelegate.splitViewController.viewControllers objectAtIndex:0] reload];

2.2。

OrdersRootController *orc = [[OrdersRootController alloc] initWithNibName:@"Orders" bundle:nil];
orc = [appDelegate.splitViewController.viewControllers objectAtIndex:0];
[orc.tableView reloadData];

編集:

通知を追加しようとしましたが、機能しません。

私は何かが欠けているに違いありません。。。

awakeFromNibにオブザーバーを追加しています:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOrders:) name:@"OrderStatusChanged" object:odc];

注文からの投稿:

[[NSNotificationCenter defaultCenter] postNotificationName:@"OrderStatusChanged" object:self];`

ただし、指定されたセレクターは起動しません。。。私は何が欠けていますか?

4

3 に答える 3

2

あなたはすでに答えを選んだのですが..DetailViewのどこかでこれを呼んでください:

UINavigationController *navController = self.splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)navController.topViewController;
于 2013-03-01T10:27:06.730 に答える
1

詳細ビューのテーブルビューへの参照(おそらくAppDelegate内)をマスタービューに渡し、テーブルのリロードデータを直接呼び出します。

または、通知を使用して、マスタービューで通知を生成し、詳細ビューで適切なデータをロードして応答することもできます。

于 2011-07-31T00:22:12.823 に答える
0

デフォルトのsplitviewコントローラーを使用している場合は、これを行うことができます

[self.rootViewController.tableView reloadData];
于 2011-07-31T18:02:49.750 に答える