1. Creating the Screen for a Bottom Sheet View
When building a bottom sheet (presentation) view, we must remember that the page we will present as a bottom sheet is a full and independent screen. It should have its own:
View Controller
Navigation Controller
So, let's design a separate screen for our search bottom sheet. Let's create the following three Swift files:
SearchBottomSheetController.swift
SearchBottomSheetView.swift
SearchTableCell.swift

Let's design the view first.
Search Bottom Sheet View
Let's open the SearchBottomSheetView.swift file. The design of this view should be exactly the same as 6.1. Setting up the Views. So let's put the following code in the file:
//
// SearchBottomSheetView.swift
// BottomSheetViewDemo
//
// Created by Sakib Miazi on 6/13/23.
//
import UIKit
class SearchBottomSheetView: UIView {
var searchBar: UISearchBar!
var tableViewSearchResults: UITableView!
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .white
//MARK: Search Bar...
searchBar = UISearchBar()
searchBar.placeholder = "Search names.."
searchBar.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(searchBar)
//MARK: Table view...
tableViewSearchResults = UITableView()
tableViewSearchResults.register(SearchTableCell.self, forCellReuseIdentifier: Configs.searchTableViewID)
tableViewSearchResults.translatesAutoresizingMaskIntoConstraints = false
self.addSubview(tableViewSearchResults)
//MARK: constraints...
NSLayoutConstraint.activate([
searchBar.topAnchor.constraint(equalTo: self.safeAreaLayoutGuide.topAnchor),
searchBar.leadingAnchor.constraint(equalTo: self.safeAreaLayoutGuide.leadingAnchor, constant: 16),
searchBar.trailingAnchor.constraint(equalTo: self.safeAreaLayoutGuide.trailingAnchor, constant: -16),
tableViewSearchResults.topAnchor.constraint(equalTo: searchBar.bottomAnchor, constant: 8),
tableViewSearchResults.bottomAnchor.constraint(equalTo: self.safeAreaLayoutGuide.bottomAnchor),
tableViewSearchResults.widthAnchor.constraint(equalTo: self.safeAreaLayoutGuide.widthAnchor),
tableViewSearchResults.widthAnchor.constraint(equalTo: self.safeAreaLayoutGuide.widthAnchor),
])
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Search Table Cell
We will use the same table cell here as Search Bar. Let's open SearchTableCell.swift file and put the following code there:
Last updated
Was this helpful?