Ios 如何通过点击导航栏按钮在tableView部分显示和隐藏标题?
使用Xcode 9.3版开发iOS应用程序,Swift 您能告诉我如何通过点击导航栏按钮来显示和隐藏(切换)tableView部分的标题吗Ios 如何通过点击导航栏按钮在tableView部分显示和隐藏标题?,ios,swift,uitableview,Ios,Swift,Uitableview,使用Xcode 9.3版开发iOS应用程序,Swift 您能告诉我如何通过点击导航栏按钮来显示和隐藏(切换)tableView部分的标题吗 搜索栏放在节的标题中,使其在滚动tableview时始终可见 我想在初始显示中隐藏搜索栏 点击导航栏按钮,显示和隐藏搜索栏 代码和屏幕截图如下 代码 import UIKit class TableViewController: UITableViewController, UISearchBarDelegate { let array =
- 搜索栏放在节的标题中,使其在滚动tableview时始终可见
- 我想在初始显示中隐藏搜索栏
- 点击导航栏按钮,显示和隐藏搜索栏
import UIKit
class TableViewController: UITableViewController, UISearchBarDelegate {
let array = ["apple", "orange", "melon", "banana", "peach"]
let searchBar = UISearchBar()
override func viewDidLoad() {
super.viewDidLoad()
let searchButton = UIBarButtonItem(title: "Search", style: UIBarButtonItemStyle.plain, target: self, action: #selector(searchTapped))
self.navigationItem.leftBarButtonItem = searchButton
}
@objc func searchTapped() {
// If searchBar is hidden, then show a searchBar.
// If searchBar is shown, then hide a searchBar.
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
searchBar.delegate = self
searchBar.placeholder = "Search..."
searchBar.showsCancelButton = true
return searchBar
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
searchBar.sizeToFit()
return searchBar.frame.height
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return array.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = array[indexPath.row]
return cell
}
}
屏幕截图
您可以使用
UITableViewDelegate
方法中的tableView:heightForHeaderInSection:
。如下
override viewDidLoad() {
super.viewDidLoad()
yourBarButtonTapped = false
//rest of your code
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return yourBarButtonTapped ? 0.1 : current_height
}
@IBAction func barButtonTapped() {
yourBarButtonTapped = true
yourTableView.reloadData()
}
您可以这样做:
@objc func searchTapped() {
// If searchBar is hidden, then show a searchBar.
tableView.tableHeaderView = self.searchBar;
// If searchBar is shown, then hide a searchBar.
tableView.tableHeaderView = nil;
tableView.reloadData();
}
或者你可以定义:
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
// if you don't need header then return nil or return uiview for header...
}
如果要隐藏搜索栏,请记住将节标题的高度保持为0.1。保持身高0不起作用。问题解决了,我可以做我想做的事。非常感谢你的帮助!问题解决了,我可以做我想做的事。非常感谢你的帮助@TakeYourMark:随时:)
var hideSearchBar = false // Class global var
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return hideSearchBar ? 0.1 : searchBarHeight
}
@IBAction func search(sender: UIBarButtonItem) {
hideSearchBar = !hideSearchBar
tableView.reloadData()
}