从UINavigationController弹出视图向我显示不正确的UITableview数据

时间:2012-07-24 02:55:50

标签: ios uinavigationcontroller uitableview

我正在尝试使用一系列UITableViewControllers在整个分层菜单中进行深入分析和钻取。 由于除了特定的数据源之外,每个UITableViewController完全相同,我只使用一个UITableViewController类。例如,级别1是姓氏数组,级别2是名字数组,级别3是生日数组。我没有3个UITableViewControllers(一个用于姓氏,一个用于名字,一个用于生日),我只有一个UITableViewController,只有alloc / init一个全新的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.)  

所以前进是正确的,但倒退似乎混淆了数据源。

1 个答案:

答案 0 :(得分:1)

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