iPhone - 从更高的ViewController刷新TableView VC

时间:2011-04-06 13:53:22

标签: iphone uitableview uiviewcontroller

我有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];

2 个答案:

答案 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执行更新。