问题描述
我试图将搜索栏(带有IBAction方法)添加到我的viewController中,但是没有显示出来。我想念什么吗?
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正在显示,但搜索栏却没有。
解决方法
不会在viewDidLoad
中设置视图的框架。因此,self.view.frame.size.width
可能不会在viewDidLoad
中返回正确的值。
searchBar = UISearchBar(frame: CGRect(x: 0,y: 0,width: self.view.frame.size.width,height: 50))
尝试在viewDidAppear中添加搜索栏。
要检测搜索栏中的文本更改,请在UISearchBarDelegate
中确认SongrequestViewController
并实现其委托方法。
func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String) {
print("search text: ",searchText)
}