【问题标题】:How to reload the tableView after dismissing a NavigationController in uisplitviewcontroller?关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?
【发布时间】: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 的数据吗? 我没有线索 谢谢

【问题讨论】:

    标签: objective-c xcode ipad uisplitviewcontroller modalviewcontroller


    【解决方案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 后不会被调用
    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 2020-03-25
    • 2021-05-28
    • 2021-07-29
    • 2016-04-30
    相关资源
    最近更新 更多