2011-04-06 12 views
1

ViewController(A)にはTableViewがあり、各行はディレクトリ名です。各行は新しいViewController(B)を押しています。 ViewController内B現在開いているディレクトリを削除するメソッドを実行しています。しかし、私がビューをポップアップしてTableViewに戻ると、私は明らかにこのディレクトリをリストに残しています。どうすれば修正できますか?iPhone - TableView VCを上位ViewControllerからリフレッシュ

ナビゲーションに戻るときに、TableViewを更新するにはどうすればよいですか?

いいえ、単純な[self.tableView reloadData]-viewWillAppearの内部は実際には機能しません。

コード:

マイ-viewWillAppear:

- (void)viewWillAppear:(BOOL)animated { 
    NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
    self.arrFolders = [[NSMutableArray alloc] init]; 
    [self allFilesInDocuments:docDir]; 
} 

-allFilesInDocumentsは、単にアレイ([arrFolders addObject:folder];)に項目を追加しています。 -tableView:cellForRowAtIndexPath:インサイド

これはあなたが親ビューコントローラコールまたはNSNotification経由でアップデートを実行する可能性が失敗しても働いていたのすべきである私は、データソースと-viewWillAppearでリロードに

cell.textLabel.text = [arrFolders objectAtIndex:indexPath.row]; 
+0

[self.tableView reloadData];テーブルをリフレッシュする簡単な方法。 –

+0

あなたは全体の質問を読むことさえできましたか? – yosh

答えて

4

NSNotificationを使用してください。 ViewControllerののviewDidLoad(A)において

通知を登録:で、子ビュー・コントローラにおける最後

-(void) deleteRow:(NSNotification *)notif{ 
[self.tableView reloadData]; 

}

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

はまた、セレクタ機能を追加あなたの削除機能は通知を投稿します:

[[NSNotificationCenter defautCenter] postNotificationName:@"deletedRow" object:nil userInfo:nil]; 

希望します。

+0

甘い、本当に良い、おかげで:) – yosh

0

編集したデータを追加します。

+0

NSNotificationが優れていて、何も削除されていないときに不要なリロードが保存されます。 –

+0

アイテムビューのカスタムデリゲートを作成し、それを親に割り当てます。これも同様に機能しますが、より多くのコードが関わっていますが、一般的にはよりクリーンです。 – DavidM

関連する問題