【问题标题】:how to remove previous views in ViewWillApear?如何在 ViewWillAppear 中删除以前的视图?
【发布时间】:2011-03-24 10:54:50
【问题描述】:

我在应用程序中有 TabBarController,所以所有标签栏项目都在同时加载,

当我更新数据并返回时,以前的视图仍然存在,并且在它们上方添加了新视图

我该怎么办

我的编码在 ViewWillApear 中,

我没有在 ViewDidLoad 中编码,因为我想在数据库中更新数据时查看数据,

并且 ViewDidLoad 被调用一次,但 ViewWillApear 每次都被调用, 所以每次添加新视图并且以前的视图都在那里,,,,

希望你明白我的意思,,,

【问题讨论】:

  • 如果您来自该视图,您可以在 viewwilldisapper 方法中删除它。
  • @Fasttracks,我应该在 ViewWillDisAppear 中写什么?
  • [self.view removeAllSubViews];,我试过了,没用:-(
  • 在 viewdidunload 方法中写 myoutlet=nil;
  • 我已经手动完成了所有编码,没有使用 Interface Builder,所以?

标签: iphone ipad viewwillappear


【解决方案1】:

您想要这些视图显示的值,或者您想要更新所有视图。

如果您只想更新值,请在 viewWillAppear 中执行此操作:无需再次创建和添加整个视图。这不是一个好习惯。

仅在 loadView 或 viewDidLoad: 方法中创建一次视图。并在 viewWillAppear 中为它们赋值:

否则在你的

-(void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];

    [self removeAllSubviews];

    //OR
    for(UIView * view in self.view.subviews)
    {
            [view removeFromSuperview];
            view = nil;
    }

}

【讨论】:

  • 只喜欢ViewWillApear中的一行代码,如[name_label setText:name-var];
  • 嘿,我不是一次分配值,而是更新 sqlite3 数据库并从中检索数据,所以每次我有更新的新值时,你得到了吗?
  • 是的,所以问题是什么,每次调用 ViewWIllApppear: 时,都会设置更新的值。
猜你喜欢
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多