Comment afficher et masquer l'en-tête dans la section du tableauAfficher par le bouton de la barre de navigation touché?

TakeYourMark

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é?

  • La barre de recherche est placée dans l'en-tête de la section pour la rendre toujours visible lors du défilement de la table
  • Je souhaite masquer la barre de recherche dans l'affichage initial
  • et, affichez et masquez la barre de recherche en appuyant sur le bouton de la barre de navigation

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

entrez la description de l'image ici

Nitish
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.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

TOP liste

chaudétiquette

Archive