Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove all subviews of a view in Swift?

Tags:

macos

swift

view

People also ask

What is addSubview in Swift?

Adds a view to the end of the receiver's list of subviews.


EDIT: (thanks Jeremiah / Rollo)

By far the best way to do this in Swift for iOS is:

view.subviews.forEach({ $0.removeFromSuperview() }) // this gets things done
view.subviews.map({ $0.removeFromSuperview() }) // this returns modified array

^^ These features are fun!

let funTimes = ["Awesome","Crazy","WTF"]
extension String { 
    func readIt() {
        print(self)
    }
}

funTimes.forEach({ $0.readIt() })

//// END EDIT

Just do this:

for view in self.view.subviews {
    view.removeFromSuperview()
}

Or if you are looking for a specific class

for view:CustomViewClass! in self.view.subviews {
        if view.isKindOfClass(CustomViewClass) {
            view.doClassThing()
        }
    }

For iOS/Swift, to get rid of all subviews I use:

for v in view.subviews{
   v.removeFromSuperview()
}

to get rid of all subviews of a particular class (like UILabel) I use:

for v in view.subviews{
   if v is UILabel{
      v.removeFromSuperview()
   }
}

The code can be written simpler as following.

view.subviews.forEach { $0.removeFromSuperview() }

This should be the simplest solution.

let container_view: NSView = ...
container_view.subviews = []

(see Remove all subviews? for other methods)


Note this is a MacOS question and this answer works only for MacOS. It does not work on iOS.


Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!