簡體   English   中英

快速刪除 UIView 並帶回 UIView

[英]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你需要刪除weakIBoutlet刪除后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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM