GitPedia

QuickTableViewController

A simple way to create a UITableView for settings in Swift.

From bcylin·Updated March 23, 2026·View on GitHub·

ℹ️ If your deployment target is iOS 13 or above, please consider using [SwiftUI](#SwiftUI). The project is written primarily in Swift, distributed under the MIT License license, first published in 2015. Key topics include: ios, radio-buttons, settings, swift, switch-control.

Latest release: v1.3.0v.1.3.0
October 5, 2020View Changelog →

QuickTableViewController

GitHub Actions
Codecov
Carthage compatible
CocoaPods Compatible
Platform
Swift 5

A simple way to create a table view for settings.

<img src="https://raw.githubusercontent.com/bcylin/QuickTableViewController/develop/Documentation/Screenshot.png" width="320"></img>

Sunsetting

ℹ️ If your deployment target is iOS 13 or above, please consider using SwiftUI.

QuickTableViewController was designed to show static table contents when it was around iOS 8 and Swift 1.2. Over the past few iterations, a couple more controls were added but it still has its limitations. After the introduction of List and Form in iOS 13, SwiftUI has become a better solution for both static and dynamic table views.

QuickTableViewController will stay at the latest released version v1.3.1 from now on. Future updates will be mostly experimental. To use QuickTableViewController in UIKit, please see:

SwiftUI

The same settings layout can be implemented in SwiftUI and integrated into UIKit using UIHostingController. For more, please see Example-iOS/SwiftUI.

swift
var body: some View { Form { Section(header: Text("Switch")) { Toggle(isOn: $viewModel.flag1) { subtitleCellStyle(title: "Setting 1", subtitle: "Example subtitle") .leadingIcon("globe") } Toggle(isOn: $viewModel.flag2) { subtitleCellStyle(title: "Setting 2", subtitle: nil) .leadingIcon("clock.arrow.circlepath") } } Section(header: Text("Tap Action")) { Button { viewModel.performTapAction() } label: { Text("Tap action").frame(maxWidth: .infinity) } } Section(header: Text("Cell Style"), footer: Text("CellStyle.value2 is not implemented")) { subtitleCellStyle(title: "CellStyle.default", subtitle: nil) .leadingIcon("gear") subtitleCellStyle(title: "CellStyle.default", subtitle: ".subtitle") .leadingIcon("globe") value1CellStyle(title: "CellStyle", detailText: ".value1") .leadingIcon("clock.arrow.circlepath") .navigationFlow { viewModel.startNavigationFlow() } } Section(header: Text("Radio Button")) { ForEach(SettingsViewModel.Option.allCases) { option in checkmarkCellStyle(with: option, isSelected: viewModel.isOptionSelected(option)) } } } }

License

QuickTableViewController is released under the MIT license. Image source: iconmonstr

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from bcylin/QuickTableViewController via the GitHub API.Last fetched: 6/14/2026