Add Subview and Remove subview example in Swift

In this video I am going to show you how to add custom user interface as a subview and how to remove it from super view on a button tap event.

Also, in this video I am using the project I have created earlier. You can watch video tutorial and learn how I’ve created Custom User Interface in XIB file here: Creating Custom User Interface with XIB in Xcode 6 and Swift

Source code created during the video

import UIKit
class ViewController: UIViewController {

var mySubview:MyCustomView!

override func viewDidLoad() {
// Do any additional setup after loading the view, typically from a nib.


override func didReceiveMemoryWarning() {
// Dispose of any resources that can be recreated.

@IBAction func showSubviewButtonTapped(sender: AnyObject) {

if(mySubview != nil && !mySubview.view.hidden)

mySubview = MyCustomView(frame: CGRect(x:10,y:300, width:275, height:147))

mySubview.titleLabel.text = “My custom label text”
mySubview.myButton.setTitle(“Hide”, forState: UIControlState.Normal)
mySubview.myButton.addTarget(self, action: “myHideButtonTapped:”, forControlEvents: UIControlEvents.TouchUpInside)

let catImage = UIImage(named: “cat1.jpeg”)
mySubview.myImage.image = catImage



func myHideButtonTapped(sender:UIButton)


Learn iOS Development with these Video Courses

How to Make a Freaking iPhone App - iOS 10 and Swift 3
icon icon

iOS 10 & Swift 3: From Beginner to Paid Professional

The Complete iOS 10 Developer Course - Build 21 Apps

Swift 3 - Learn to Code with Apple's New Language
icon icon

Learn How to Build Mobile Apps for iOS with Swift, PHP and MySQL
icon icon

Follow me on one of your favourite social networks to learn about new video tutorials and code examples:

Twitter: @SwiftVideoBlog
Google Plus:
Facebook: Swift Developer Blog on Facebook

  • Vince

    Hi, I am researching about adding a UISegmentedControl inside UITableViewHeaderFooterView. I am hoping your tutorial will be the final puzzle. Currently, I have been able to add a UILabel without using a Subview. The problem is I just can’t add a UISegmentedControl. So I am thinking I need to create a custom Subview and include a UISegmentedControl in it, and then add the Subview into the UITableViewHeaderFooterView. 🙂 I hope that will work.

  • Vince

    I am stuck on the MyCustomView.swift file error–pls see attached screenshot. And if I change it to “as!”, the error disappears but then I get two same errors on the two super.init() lines. This is the error: “Property ‘self.view’ not initialised at super.init call. Any tips?

    • Hmmm…

      let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
      return view

      Works well for me…

  • Alex

    I have a EXC_BAD_ACCESS when: let nib = UINib(nibName: “CustomView”, bundle: bundle) called