0

我正在尝试使用一系列 UITableViewControllers 在整个分层菜单中向下钻取和向上钻取。由于每个 UITableViewController 除了其特定的数据源外完全相同,因此我只使用一个 UITableViewController 类。例如,级别 1 是姓氏数组,级别 2 是名字数组,级别 3 是生日数组。我没有 3 个 UITableViewController(一个用于姓氏,一个用于名字,一个用于出生日期),我只有一个 UITableViewController 并且只分配/初始化一个全新的 UITableViewController,但是使用数据源数组初始化它,每个连续向下钻取(即 didSelectRowAtIndexPath)。如果我需要深入到第四层,我可以切换阵列,我们都很好。这样可以更好地扩展。

我可以“向前”并正确向下钻取。它完美无瑕。但是当我向后退时,即单击 UINavigationController 的“后退”按钮时,我确实得到了“父级”数据,或者它出现了。但是,当我真正单击一个单元格以再次前进时,看起来我的数据源实际上并没有在后台切换。它似乎被正确缓存了,但是当我点击数据时,实际上 2 级的数据源实际上不再由 2 级的数据支持。它实际上有 3 级的数据,也就是我刚刚从堆栈中弹出的 UITableViewController。

我是否需要覆盖 UINavigationController 的“后退按钮”,然后在弹出堆栈时更新我的​​数据源?我不确定我在这里缺少什么。我的 UITableViewCode 将近 1000 行,这是我面临的普遍问题。

Table1    Table2                     Table3
smith -->  Joe -->                   1/1/1980

hit "back"
          Table2
          Joe is displayed (correct)

          tap "Joe" again -->        6/23/1976  (indicating that this is someone else's birthdate, so the datasources have gotten mixed up.)  

所以向前走是正确的,但向后走似乎会混淆数据源。

4

1 回答 1

1

考虑看看这个项目是如何做到的。它正在做您描述的确切事情,而是从 plist 创建表层次结构。在示例应用程序中前后导航工作正常,您可以更改 plist 以包含更多级别。

于 2012-07-24T04:16:07.613 回答