【问题标题】:Swift: Search bar not showing up on viewController when coded programmaticallySwift:以编程方式编码时,搜索栏未显示在 viewController 上
【发布时间】: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 显示出来了,但搜索栏没有显示出来。

【问题讨论】:

    标签: ios swift ibaction programmatically-created


    【解决方案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 以显示搜索栏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2018-03-13
    相关资源
    最近更新 更多