首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从superview移除视图

从superview移除视图
EN

Stack Overflow用户
提问于 2017-02-26 15:33:06
回答 1查看 2K关注 0票数 1

由于内存问题,当视图消失时,我从superview中删除这个集合视图,但是我想在视图出现时添加它,我只想将它添加回来!还是有别的办法可以做到?谢谢。

代码语言:javascript
复制
  override func viewWillDisappear(_ animated: Bool) {
       super.viewWillDisappear(animated)
       let subViews = self.view.subviews
       for subview in subViews{
           if subview.tag == 1 {
              subview.removeFromSuperview()
            }
        }        
    }

更新

代码语言:javascript
复制
 var savedView: UIView?

 override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    let subViews = self.view.subviews
    for subview in subViews{
        if subview.tag == 1 {
            savedView = subview
            subview.removeFromSuperview()
        }
    }
}




override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if let subview = savedView {
        view.addSubview(subview)
        savedView = nil
    }
}

但它没有把它加回去。

EN

回答 1

Stack Overflow用户

发布于 2017-02-26 15:36:57

在视图控制器中创建一个可选属性。在viewDidDisappear方法中将已找到的子视图分配给此可选属性。然后,在viewWillAppear方法中,可以检查是否设置了可选属性。如果设置,将其作为子视图添加回。

添加此属性:

代码语言:javascript
复制
var savedView: UIView?

然后在viewDidDisappear中这样做

代码语言:javascript
复制
override func viewDidDisappear(_ animated: Bool) {
   super.viewDidDisappear(animated)
   // This assumes there is no other deep subview with a tag of 1
   // If this isn't true, use your current for-loop to find the subview
   if let subview = subviews.viewWithTag(1) {
       savedView = subview
       subview.removeFromSuperview
   }
}

并在viewWillAppear中这样做

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated)
   if let subview = savedView {
       addSubview(savedView)
       savedView = nil
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42470464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档