删除UIView并在swift中恢复UIView

时间:2016-06-21 17:52:45

标签: ios swift

我正在使用UIView而不是视图控制器/我在单击删除按钮后删除视图。当用户想要回看视图时,我试图让视图回来。 示例:myView.removeFromSuperview() 反正有没有把视图带回来? 快点谢谢你们!

@IBOutlet weak var brokeView: UIView!
@IBOutlet weak var deleteButton: UIButton!

@IBAction func deleteViewButton(sender: AnyObject) {
        if brokeView != nil {
            brokeView.removeFromSuperview()
        }

4 个答案:

答案 0 :(得分:9)

brokeView

您已经引用了要删除并再次添加的视图weak,但是superView已经brokeView,因此一旦从strong删除它,它就会被取消分配。由于您需要将此@IBOutlet var brokeView: UIView! 添加回来view.addSubview(brokeView)

{{1}}

现在你可以像

一样添加它
{{1}}

答案 1 :(得分:0)

不,除非你再次初次化,否则无法取回它。您可以隐藏视图并取消隐藏。

viewToBeHidden.hidden = true
//when you want to make it reappear unhide it.
viewToBeHidden.hidden = false

或者像@rmaddy建议保留参考。

var myView = UIView()
myView.removeFromSuperview
//then just add it back.
self.view.addSubView(myView)

答案 2 :(得分:0)

如果你从superview中删除它,你可以再次添加它,但你不应该将该视图设为nil,否则你将不得不创建一个。从superview移动只从父视图中删除视图。

subview.removeFromSuperview() // remove from parent view

parentView.addSubview(subview) //adding again on it parent view

创建视图: 这个示例,取决于您查看已创建的init方法,使用该方法。

MyCustomView *customView = MyCustomView(frame: CGRectZero(top: 0, left: 0, width: 200, height: 50)
self.view.addSubview(customView)

答案 3 :(得分:0)

如果您想使用 IBoutlet,您需要在删除 weak 后从您的 IBoutlet 中删除 weak,您删除并再次将视图添加到您的视图中,但您需要以编程方式设置约束以查看。

示例:

// removed 'weak' reference
@IBOutlet var mButton: UIButton!

... other functionality

// remove from superview
mButton.removeFromSuperview()

// add again to view
view.addSubview(mButton)
               
// set re-set constraints 
NSLayoutConstraint.activate([
                    mButton.trailingAnchor.constraint(equalTo:       view.trailingAnchor, constant: -20),
                    mButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -40)
                ])