我正在使用UIView而不是视图控制器/我在单击删除按钮后删除视图。当用户想要回看视图时,我试图让视图回来。 示例:myView.removeFromSuperview() 反正有没有把视图带回来? 快点谢谢你们!
@IBOutlet weak var brokeView: UIView!
@IBOutlet weak var deleteButton: UIButton!
@IBAction func deleteViewButton(sender: AnyObject) {
if brokeView != nil {
brokeView.removeFromSuperview()
}
答案 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)
])