Create UITableView Programmatically in Swift

This Swift code example will demonstrate how to create UITableView programmatically in Swift.

The code example below will cover:

  • Make ViewController conform to UITableViewDataSource, so that we can load table items into the table view
  • Make ViewController conform to UITableViewDelegate, so that we can handle events like for example when user taps on a table cell
  • Load three items from an array into the table view
  • Determine device screen size and make table view stretch full width and height
  • Set textLabel of UITableViewCell
  • Implement didSelectRowAtIndexPath function, to handle events when user taps on a table view cell

UITableView programmatically. Complete Code Example in Swift.

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    var myTableView: UITableView  =   UITableView()
    var itemsToLoad: [String] = ["One", "Two", "Three"]
    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.
    override func viewWillAppear(animated: Bool) {
        // Get main screen bounds
        let screenSize: CGRect = UIScreen.mainScreen().bounds
        let screenWidth = screenSize.width
        let screenHeight = screenSize.height
        myTableView.frame = CGRectMake(0, 0, screenWidth, screenHeight);
        myTableView.dataSource = self
        myTableView.delegate = self
        myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "myCell")
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
        return itemsToLoad.count
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
        let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath)
        cell.textLabel?.text = self.itemsToLoad[indexPath.row]
        return cell
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
        print("User selected table row \(indexPath.row) and item \(itemsToLoad[indexPath.row])")


Check out these short video tutorials on how to use UITableView in Swift:

UITableView in Swift. Video Tutorials.

Learn iOS Development with these Video Courses

The Complete iOS 11 & Swift Developer Course - Build 20 Apps

Use Xcode 9 & Swift 4 to make real apps like Uber and Instagram, with CoreML & ARKit. Includes AWS Credit and much more. Preview this video course. icon

How to Make a Freaking iPhone App - iOS 11 and Swift 4

iPhone App Development from scratch. Learn how to make iOS apps using Xcode 9. The Basics Include Pokemon Go & Snapchat. Learn to build iOS Apps with Xcode 9 and Swift 4. How to Make a Freaking iPhone App - iOS 11 and Swift 4 icon

iOS 11 and Xcode 9 - Complete Swift 4 & Objective-C Course

A Complete iOS 11 and Xcode 9 Course with Swift 4 & Objective-C. Preview this video course. iOS 11 and Xcode 9 - Complete Swift 4 & Objective-C Course icon