我正在尝试使用一系列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.)
所以前进是正确的,但倒退似乎混淆了数据源。
答案 0 :(得分:1)
考虑一下this project如何做到这一点。它正在执行您描述的确切事情,而不是从plist创建表层次结构。在示例应用程序中前后导航工作正常,您可以更改plist以包含更多级别。