我正在尝试使用一系列 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.)
所以向前走是正确的,但向后走似乎会混淆数据源。