[英]Removing a UIView and bringing back the UIView in swift
我使用的是 UIView 而不是視圖控制器/單擊刪除按鈕后我將刪除視圖。 當用戶想要返回視圖時,我試圖讓視圖返回。 示例:myView.removeFromSuperview() 有沒有把視圖帶回來? 急忙謝謝各位!
@IBOutlet weak var brokeView: UIView!
@IBOutlet weak var deleteButton: UIButton!
@IBAction func deleteViewButton(sender: AnyObject) {
if brokeView != nil {
brokeView.removeFromSuperview()
}
@IBOutlet weak var brokeView: UIView!
你已經擁有的視圖的引用brokeView
你要刪除並重新添加,但其weak
所以一旦從刪除它會被釋放superView
。 因為你需要這個brokeView
來添加,讓它變得strong
。
@IBOutlet var brokeView: UIView!
現在你可以像
view.addSubview(brokeView)
不,除非您再次初始化,否則無法取回它。 您可以隱藏和取消隱藏視圖。
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)
如果您從超級視圖中刪除它,您可以再次添加它,但您不應該將該視圖設為零,否則您將不得不創建新的視圖。從超級視圖中刪除只會從父視圖中刪除視圖。
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)
如果你想使用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)
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.