2015-05-05 10 views
7

Desidero utilizzare la barra di ricerca nella mia app. Ma non ho trovato alcun tutorial per questo.Ottieni il testo della barra di ricerca in rapido

La mia domanda è semplice: come posso ottenere il testo della barra di ricerca quando l'utente presume di inserire il pulsante?

ho bisogno di qualcosa come questo nel mio controller della vista:

override func userPressedToEnter(text: String) { 
    println("User entered: \(text)") 
} 

Come posso fare questo in rapida?

+0

hai fatto installare un delegato per la barra di ricerca? Hai visto i documenti per 'UISearchBarDelegate'? – rmaddy

+0

No, potresti mostrarmi una tabella di marcia? – Okan

risposta

11

Supponendo di disporre di una semplice barra di ricerca nello storyboard, assicurarsi di averla collegata come presa. Quindi usa questo come esempio. Use UISearchBarDelegate the reference per ulteriori informazioni sui metodi di delega disponibili.

import UIKit 

class ViewController: UIViewController, UISearchBarDelegate { 

@IBOutlet var searchBar:UISearchBar! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    searchBar.delegate = self 
} 

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
    println("searchText \(searchText)") 
} 

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    println("searchText \(searchBar.text)") 
} 

} 
+0

Grazie mille, funziona bene. Ultima domanda: come posso gestire il pulsante di invio premere? – Okan

+0

Contento di averti aiutato. Ho aggiunto il metodo delegato per te per rilevare la pressione del pulsante di ricerca, ma è tutto illustrato nel riferimento a cui mi sono collegato. Dovresti davvero verificarlo, è facile da usare. – Frankie

1

vorrei prendere uno sguardo al protocollo UISearchBarDelegate: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchBarDelegate_Protocol/index.html

Fai la tua vista classe controller conformi a questo protocollo e si avrà tutto il necessario per interagire con la vostra barra di ricerca. In alternativa, è possibile impostare nel campo di testo della barra di ricerca, ma Apple offre un modo molto più pulito, piacevole e guidato dagli eventi tramite questo protocollo.

+0

Ok, ho capito ma non so come collegare questo protocollo con la mia connessione di uscita. Puoi dare un piccolo esempio per questo? – Okan

0

Supponendo di avere un Tableview che si sta cercando, aggiungere una barra di ricerca e ricerca Controller per la Tableview nello storyboard. Questo collegherà tutte le origini dati/delegherà le connessioni di cui hai bisogno.

Poi, nel tuo Tableview è possibile utilizzare:

func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool { 
    doStuffWithSearchText(searchBar.text, scope: 0) 
} 

che andranno chiamato ogni volta che cambiano il testo nella barra di ricerca. E 'comune per aggiornare i dati che viene visualizzato ogni volta che cambiano il testo, ma se hai bisogno di farlo solo quando tocco sul pulsante di ricerca utilizzare questa funzione invece:

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
    doStuffWithSearchText(searchBar.text, scope: 0) 
} 

E si può ottenere il testo dalla ricerca risultati regolatore:

controller.searchBar.text 

o dalla barra di ricerca:

searchBar.text 

Se non si utilizza un controller Tableview:

  • aggiungere una barra di ricerca
  • collegare il controller della vista come delegato della barra di ricerca
  • Quindi utilizzare il searchBarSearchButtonClicked: funzione per gestire quando si tocca il pulsante "Cerca" o Searchbar (Searchbar: UISearchBar, textDidChange Testo di ricerca : String) per gestire w

ho scritto un tutorial su farlo con un controller della vista tabella che ha tutti i dettagli grintosi: Adding a Search Bar to a Table View in Swift

Problemi correlati