【问题标题】:iphone sdk - reload tableview data - from a separate classiphone sdk - 重新加载表格视图数据 - 从单独的类
【发布时间】:2011-01-10 01:47:23
【问题描述】:

我想运行代码 [tableView reloadData],但我想将它从一个单独的类调用到我想重新加载数据的视图控制器。

(注意。如果重新加载 tableview 比 reloadData 更有效,请加入)。

假设我要重新加载的视图是“RootViewController”,而我目前在“DetailViewController”中,我需要做些什么才能使其正常工作。

我现在最好的尝试是 [RootViewController.tableView reloadData],但它不正确。 (我得到错误:预期的':'之前。令牌。

问候,@norskben

【问题讨论】:

    标签: iphone reload tableview


    【解决方案1】:

    您可以使用通知或协议。

    使用通知:

    在完成保存数据之后和从方法返回之前发布通知。像这样的:

    // 发布通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"DataSaved" object:nil];

    在处理表格的控制器中,实现

    - (void) dataSaved:(NSNotification *)notification{
    
        [self.tableView reloadData];
    
    }
    

    并在其viewDidLoad 方法中添加以下代码以注册通知:

    [[NSNotificationCenter defaultCenter] addObserver:self
                                    selector:@selector(dataSaved:)
                                                     name:@"DataSaved" object:nil];
    

    最后在dealloc方法中取消注册

    [[NSNotificationCenter defaultCenter] removeObserver:self];
    

    使用协议:

    开始使用您之前的控制器可以使用的回调创建协议。

    @protocol dataSavedDelegate
    -(void)dataSaved;
    @end
    

    完成数据保存后:

    [(id< dataSavedDelegate >)object dataSaved];
    

    现在,在您以前的控制器中处理委托方法:在 dataSaved() 方法中您重新加载表。

    【讨论】:

      【解决方案2】:

      您需要在 DetailViewController 中引用您的 RootViewController 实例。在 DetailViewController 中声明一个属性,当你实例化你的 DetailViewController(我假设来自 RootViewController)时,用类似的东西设置它

      // in RootViewController.m
      detailController.rootController = self;
      [self.navigationController pushViewController:...
      

      然后就可以从详细控制器访问根控制器了:

      [self.rootController.tableView reloadData];
      

      当您希望 RootController 重新加载并让 RootController 监听通知时,另一种方法是在 DetailViewController 中发布自定义 NSNotification。

      另一种方法是仅在用户返回根控制器时才重新加载表格(在 RootViewController 的 viewWillAppear: 方法中执行),为什么要重新加载甚至不在屏幕上的表格?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-10
        • 1970-01-01
        • 2019-07-08
        相关资源
        最近更新 更多