【问题标题】:iOS: Update folder structure in subfolderiOS:更新子文件夹中的文件夹结构
【发布时间】:2012-11-17 16:52:00
【问题描述】:

在我的通用 iOS 应用程序中,我创建了一个保存在 plist 文件中的文件夹结构。它是这样构建的:

  • [阵列] 根
    • [字典] 项目 0
      • [字符串] 标题
      • [数组] 子项
        • [字典] 项目 0
        • [字典]第1项
    • [字典] 项目 1
      • [字符串] 标题
      • [数组] 子项
        • [字典] 项目 0
        • [字典]第1项
        • [字典]第2项
        • [字典]第3项
    • [字典] 项目 2
      • [字符串] 标题
      • [数组] 子项

使用这种结构,我可以浏览文件夹。当前数据源(始终是数组)的内容显示在表格视图中。现在可能是某些数据发生了变化。因此,我想刷新我的表结构和要填充的数据。如果在根文件夹中完成,则没有问题,但如果我在任何子文件夹中尝试,我只能刷新当前数组。因此,如果我导航回结构的上层,仍然会使用旧数据。

更新所有数据但仍保留在当前选定文件夹中(仅当它仍然存在时)的最佳做法是什么?

提前致谢

【问题讨论】:

  • 树的结构是固定的吗?只是更新数据?
  • 我从 URL 加载结构并从中创建 plist。所以重新加载结构后可能会有所不同。数据也可以变化。所以我需要检查我的文件夹是否仍然存在,然后用加载的数据填充它

标签: ios refresh directory subdirectory


【解决方案1】:

1, 你有一个类方法用于更新 plist,如下所示:[MyMethod updatePlist];

2,您有一个具有 viewWillAppear 或 viewDidAppear 方法的父视图控制器。在那里,您调用 [MyMethod updatePlist]。

3、你所有的viewController都继承父view controller。

所以每次加载新的视图控制器视图时,它总是更新 plist。如有必要,您可以添加处理内容以显示加载。

有用吗?

【讨论】:

    【解决方案2】:

    您是如何导航到子文件夹的? 如果你使用 UINavigationController,你应该在用户导航回来时重新加载你的 tableview。 例如,您可以在 viewWillAppear 中执行此操作

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        // Reload data in table view
        [self.tableView reloadData];
    }
    

    【讨论】:

    • 是的,我使用导航控制器。当一个文件夹被点击时,我将当前级别设置为 += 1,我应该在表中显示的数据源是包含我的项目的当前数组。
    【解决方案3】:

    您可以使用通知,因此每个视图控制器都会侦听更新通知,并在您的数据更改时发布通知。

    您可以简单地在每个视图控制器的viewWillAppear: 方法中重新加载表数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多