6
votes

Comment faire une création d'uableViewController conforme au protocole UisearchResultsUndating?

J'ai un UitailViewController CODE> CLASSE dans lequel je suis implémentant un UisearchController code>. J'ai ajouté les délégués suivants:

"Type 'CustomTableViewController' does not conform to protocol UISearchResultsUpdating"


1 commentaires

Avez-vous une classe nommée "CustomTableViewController"?


3 Réponses :


8
votes

Lorsque vous ajoutez des protocoles à votre définition de classe, le moyen le plus simple est de souris sur le nom du protocole et la commande Cliquez sur son nom. Cela tirera sa définition. Avec les définitions de protocole, ils ont généralement des méthodes immédiatement les suivantes. Si une méthode est requise, il sera en haut, s'il est facultatif à l'avant, il n'est pas nécessaire de se conformer.

Dans le cas de `UisearchResultsUndating, il n'a qu'une méthode et il est nécessaire. Copiez simplement la méthode, ou plusieurs méthodes et cliquez sur la flèche arrière pour revenir à votre classe. Coller les méthodes dans votre classe et les mettre en œuvre. S'ils étaient des méthodes facultatives (dans ce cas, il n'y a pas de méthodes facultatives), supprimez la facultative de l'avant. C'est ce que j'ai copié de la définition. P> xxx pré>

alors vous la mettez à jour pour faire ce que vous voulez faire. P>

func updateSearchResultsForSearchController(searchController: UISearchController) {
    //do whatever with searchController here.
}


0 commentaires

17
votes

SWIFT 3:

func updateSearchResults(for searchController: UISearchController) {

// code here

}


3 commentaires

Comment répondre - veuillez le lire avant de poster.


Hey @agatab, votre lien références L'URL incorrecte - devrait être Comment répondre


Je ne sais pas que le problème est - pour rendre le contrôleur est conforme au protocole, la syntaxe de la méthode requise à Swift 3 a changé selon ce qui précède.



6
votes

SWIFT 3.0

//Make sure to import UIKit
import Foundation
import UIKit

class ViewController: UIViewController, UISearchBarDelegate {

     var searchController = UISearchController()

     override func viewDidLoad() {
          //Setup search bar
          searchController = UISearchController(searchResultsController: nil)
          searchController.dimsBackgroundDuringPresentation = false
          definesPresentationContext = true
          //Set delegate
          searchController.searchResultsUpdater = self
          //Add to top of table view
          tableView.tableHeaderView = searchController.searchBar
     }
}
extension ViewController: UISearchResultsUpdating {
     func updateSearchResults(for searchController: UISearchController) {
          print(searchController.searchBar.text!)
     }
}


1 commentaires

DéfinitPrésentationContext = true était quelque chose d'important que j'étais manquant. Ne répond pas à la question, mais aide. Merci d'avoir partagé.