2012-07-24 39 views
0

我正在尝试使用一系列UITableViewControllers在整个层级菜单中钻取并钻取drillup。 由于每个UITableViewController除了特定的数据源外完全相同,所以我只使用一个UITableViewController类。例如,级别1是姓氏数组,级别2是名字数组,级别3是生日数组。我没有3个UITableViewController(一个用于名字,一个用于名字,另一个用于生日),我只有一个UITableViewController,并且只分配/ init一个全新的UITableViewController,但是用数据源数组初始化它,每次连续向下钻取(即,didSelectRowAtIndexPath)。如果我需要深入到第四级,我可以切换阵列,我们都很好。它以这种方式更好地扩展。关闭UINavigationController的弹出视图显示不正确的UITableview数据

我可以“转发”并正确钻取。它完美无瑕。但是当我倒退时,即单击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

您可以发布您正在使用的代码将新的表视图控制器推入堆栈吗? – Msencenb 2012-07-24 03:49:47

回答

1

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

相关问题