导航控制器疯狂

时间:2009-05-08 00:54:19

标签: iphone objective-c

问候。我有一个行为不端的导航栏应用程序。我有两个按钮,一个显示我的数据库的所有结果,另一个显示我的数据库的一个子集。当然,每个按钮都有自己的动作方法。这两个方法都实例化了同一个类的视图控制器对象。

如果我启动应用程序并且只点击“所有结果”按钮,我会看到所有结果。愚蠢的是,当我单击结果子集的按钮(并查看结果子集)时,单击导航栏上的“返回”,然后单击整个集合的第一个按钮,我再次看到该子集。

在整个地方调试断点时,我注意到我的结果视图控制器的dealloc方法没有被调用。但是,当我单击Back然后单击all-results按钮时,我的结果视图控制器确实再次调用了alloc / init方法。

所以,即使我有一个明显的内存泄漏,我的新分配/初始化视图控制器对象与先前实例化视图的数据有多大可能相同?逐步完成代码使得这个问题看起来更奇怪,因为它似乎表现得很好......只是产生旧数据。

任何建议都会很棒。谢谢!

4 个答案:

答案 0 :(得分:1)

在表视图上调用“reloadTableData”应确保刷新数据。在动作方法中调用它。

答案 1 :(得分:0)

为什么按钮会反复实例化视图控制器?为什么没有指向视图控制器的指针作为实例变量,你只需要设置一次然后可以随意使用?

答案 2 :(得分:0)

这只是一个疯狂的猜测,但它可能与tableViewCells的重用有关。尝试始终创建UITableViewCell,避免使用重用标识符来查看旧数据是否仍然存在。

答案 3 :(得分:0)

我弄清楚前一段时间出了什么问题,并认为我会回答我自己的愚蠢问题。 :)

我忘记了我将我的数据库类设为单例,并在app委托类中添加了一个指向“allResults”的指针。

非常感谢您的意见。每一点都可以帮助我更好地理解这个新环境。