Développement d'une application iOS avec Xcode ver 9.3, Swift.
Pourriez-vous me dire comment afficher et masquer (changer) l'en-tête dans la section de tableView par le bouton de la barre de navigation touché?
Le code et la capture d'écran sont les suivants.
Code
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
}
}
Capture d'écran
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()
}
N'oubliez pas de garder la hauteur de l'en-tête de section à 0,1 si vous souhaitez masquer searchBar. Garder la hauteur 0 ne fonctionnera pas.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots