每次关闭时如何重置视图?

Posted

技术标签:

【中文标题】每次关闭时如何重置视图?【英文标题】:How to reset view each time its closed? 【发布时间】:2011-08-04 18:28:22 【问题描述】:

我有一个显示联系信息的表格视图。我有另一种观点,它充当“接触板”。基本上它有空行或文本填充行。当用户点击表格视图上的按钮时,我希望它有空行(或默认状态),并且我希望它在用户点击表格视图上的一行时预填充文本。我的数据源写入/读取方法工作正常,但是一旦“接触板”视图被调出;它保存了它的状态。

例如,如果我用按钮打开“接触板”视图,那么它会显示正确的默认状态。然后,如果我通过点击一行打开“接触板”视图,它将显示正确的文本,但如果我尝试通过按钮再次打开它,那么它将不会重新显示默认状态,而是会显示文本从以前开始。

视图关闭后如何重置?我是否在 [self removeFromSuperview] 之前调用 dealloc()?

【问题讨论】:

【参考方案1】:

viewWillAppear 方法中,只需做一个

[self.tableView reloadData];

每次有导航或每次打开视图时都会调用此方法。

【讨论】:

reloadData 不知道要执行哪个状态。我在 cellForRowAtIndexPath: 期间使用 if 来更改状态,但问题是我正在测试的变量在视图关闭后不会重置。我在 init 和 viewDidLoad 方法中设置了它的值,但是这些方法在视图加载一次后不会被调用。我需要以编程方式将其从内存中删除。我怎样才能做到这一点? 哈哈。您面临的问题不在于代码。它只需要一个良好的逻辑布局。我会简单地使用NSUserDefaults 在视图之间进行通信并检查上一个屏幕中的更改,并基于此我在viewWillAppear 中采取行动 @crzrcn 您可以尝试在 viewWillDisAppear 方法中重置变量的值。【参考方案2】:

请记住,在您将视图添加为子视图后,它的保留计数会增加 1。 因此,如果您从超级视图中删除它,它会下降 1。您应该在将子视图添加到另一个视图后释放它。这样,当您调用 removeFromSuperview 时,它会减一并完全释放。

【讨论】:

以上是关于每次关闭时如何重置视图?的主要内容,如果未能解决你的问题,请参考以下文章

输出累积每次迭代而不是重置[关闭]

应用程序关闭后如何快速保存全局变量?

如何更改通过电子邮件发送的重置密码 VIEW? [关闭]

关闭弹出模式时如何重置文本区域的大小?

如何在Django视图中使用for循环返回每次迭代[关闭]

重置 mdi 子视图位置