Swift:以编程方式编码时,搜索栏未显示在 viewController 上
Posted
技术标签:
【中文标题】Swift:以编程方式编码时,搜索栏未显示在 viewController 上【英文标题】:Swift: Search bar not showing up on viewController when coded programmatically 【发布时间】:2020-08-10 19:47:41 【问题描述】:我正在尝试向我的 viewController 添加一个搜索栏(使用 IBAction 方法),但它没有显示出来。我错过了什么吗?
import UIKit
class SongrequestViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate
var tableView = UITableView()
var searchBar = UISearchBar()
override func viewDidLoad()
super.viewDidLoad()
view.backgroundColor = .white
tableView = UITableView(frame: CGRect(x: 10, y: 200, width: 370, height:400))
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.dataSource = self
tableView.delegate = self
self.view.addSubview(tableView)
searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 50))
searchBar.searchBarStyle = UISearchBar.Style.prominent
searchBar.placeholder = "Search for your song here..."
searchBar.sizeToFit()
searchBar.isTranslucent = false
searchBar.delegate = self
self.view.addSubview(searchBar)
tableView 显示出来了,但搜索栏没有显示出来。
【问题讨论】:
【参考方案1】:不会在viewDidLoad
中设置视图的框架。所以self.view.frame.size.width
可能不会在viewDidLoad
中返回正确的值。
searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 50))
尝试在 viewDidAppear 中添加搜索栏。
要检测搜索栏中的文本更改,请在您的SongrequestViewController
中确认UISearchBarDelegate
并实现其委托方法。
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
print("search text: ", searchText)
【讨论】:
谢谢,您知道如何在搜索栏中添加与 IB 操作方法相似或相同的内容吗? 谢谢。不幸的是,它没有用,但无论如何谢谢!我将另一个独立的 XIB 文件添加到我的 viewController 以显示搜索栏。以上是关于Swift:以编程方式编码时,搜索栏未显示在 viewController 上的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的 Xcode:导航栏未显示在 UI 集合视图(模拟器)中