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

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

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

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

【问题讨论】:

    标签: iphone view


    【解决方案1】:

    viewWillAppear 方法中,只需做一个

    [self.tableView reloadData];
    

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

    【讨论】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 1970-01-01
      • 2014-12-07
      • 2021-11-10
      • 2020-06-04
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多