如何在uisplitviewcontroller中解除NavigationController后重新加载tableView?

时间:2011-09-05 01:33:04

标签: objective-c xcode ipad uisplitviewcontroller modalviewcontroller

我使用UISplitviewController作为模板。

编辑按钮的操作:

newExViewController *editWindow =[[newExViewController alloc]initWithNibName:@"newExViewController" bundle:nil];
UINavigationController *navBar=[[UINavigationController alloc]initWithRootViewController:editWindow];
navBar.modalPresentationStyle = UIModalPresentationFormSheet;
navBar.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

[self presentModalViewController:navBar animated:YES];
[navBar release];

[editWindow release];

navBar有一个UIBarButton用于saveButton。按SaveButton

时会调用此方法
[self dismissModalViewControllerAnimated:YES];

现在是问题所在: 任何想法当modalView被解散时如何重新加载主NavigationConteroller和detailViewController的数据? 我没有线索 日Thnx

2 个答案:

答案 0 :(得分:7)

你应该研究NSNotificationCenter。在使用UITableView的视图中,创建通知侦听器。然后在解散的视图中,调用该通知。

更具体地说,通知将调用应包含reloadData

的方法

实施例

以下内容应与您要重新加载的UITableView一起使用:

这可能与您的[self dismissModalViewControllerAnimated:YES];

一致
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethodToReloadTable) name:@"reloadTable" object:nil];

您可以通过以下方式致电通知中心重新加载表格:

[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTable" object:self];

通知方法示例:

- (void)someMethodToReloadTable:(NSNotification *)notification 
{
    [myTableView reloadData];  
}

不要忘记删除通知观察者:

-(void)viewDidUnload 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"reloadTable" object:nil];
}

答案 1 :(得分:3)

在包含要重新加载的视图的控制器中,您应该拒绝以下方法,当modalView被解除时(或者控制器的主视图将首次加载时)将调用该方法:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    // here you can reload needful views, for example, tableView:
    [tableView reloadData];
}