关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?

Posted

技术标签:

【中文标题】关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?【英文标题】:How to reload the tableView after dismissing a NavigationController in uisplitviewcontroller? 【发布时间】:2011-09-05 01:33:03 【问题描述】:

我使用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 时调用它

[self dismissModalViewControllerAnimated:YES];

现在的问题是: 知道当 modalView 被解除时如何重新加载主 NavigationConteroller 和 detailViewController 的数据吗? 我没有线索 谢谢

【问题讨论】:

【参考方案1】:

您应该查看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];

【讨论】:

效果很好。谢谢:D,我能够重新加载详细视图和根视图。太棒了 您好,我也在尝试这样做,但不确定将通知中心放在哪里。它应该上 rootviewcontroller 的课吗?还是 tableview(在 rootview 上)本身?【参考方案2】:

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

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];
    // here you can reload needful views, for example, tableView:
    [tableView reloadData];
  

【讨论】:

viewWillAppear 或 viewdidappear 在您关闭 modalViewControler 后不会被调用

以上是关于关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?的主要内容,如果未能解决你的问题,请参考以下文章

关闭与 uisplitviewcontroller 结合使用的模式视图后出现问题

在 iPhone 6 Plus 上关闭 UISplitViewController 弹出框时 UIWebView 被拉伸

关闭模式对话框时 iPad UISplitViewController 不必要地旋转

UISplitViewController 重新加载数据

ios 7 中的 UisplitViewController 问题(崩溃)

UISplitViewController 中的 UIPopovercontroller