我有ViewView的ViewController(A),其中每一行都是一个目录名。每一行都在推送一个新的ViewController(B)。在ViewController B里面我正在运行删除当前打开的目录的方法。但是,当我弹出视图并返回TableView时,我显然仍然在列表中有此目录。我该如何解决?
如何在返回导航时刷新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:
内部我使用
cell.textLabel.text = [arrFolders objectAtIndex:indexPath.row];
答案 0 :(得分:4)
使用NSNotification。
在ViewController(A)的viewDidLoad中注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deletedRow:) name:@"deletedRow" object:nil];
还添加选择器功能:
-(void) deleteRow:(NSNotification *)notif{
[self.tableView reloadData];
}
最后在子视图控制器中,在删除功能中发布通知:
[[NSNotificationCenter defautCenter] postNotificationName:@"deletedRow" object:nil userInfo:nil];
希望有所帮助
答案 1 :(得分:0)
对数据源的编辑和-viewWillAppear中的重新加载应该有效,但如果失败,您可以通过父视图控制器调用或NSNotification执行更新。