10

Sto tentando di aggiungere un altro campo di testo per un input "Location" a un UISearchController quando l'utente si concentra sulla barra di ricerca, appena sotto la barra di ricerca sulla barra di navigazione.Come aggiungere un altro campo di testo a UISearchController quando lo stato attivo è sulla barra di ricerca?

Esempio di quello che ho e dove mi piacerebbe che vada:

enter image description here

Ho provato qualcosa di simile, che non funziona:

var searchController: UISearchController! 

func searchBarTextDidBeginEditing(searchBar: UISearchBar) { 
    var myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200.00, height: 40.00)) 
    myTextField.backgroundColor = UIColor.purpleColor() 
    myTextField.text = "Location" 
    myTextField.borderStyle = UITextBorderStyle.None 
    searchController.view.addSubview(myTextField) 
} 

Qualsiasi l'aiuto sarebbe fantastico! Grazie.

+0

Puoi aggiungere altro codice. Voglio sapere come lo gestisci. –

risposta

1

Prova in questo modo:

basta creare un custom NavigationBar aggiungere il campo di testo che e sovrascrivere i SearchController delegato Metodi

provarlo può opere.

4

Non so se hai trovato la risposta o meno. Lasciami suggerire la mia soluzione.

Niente di sbagliato nel codice. Funziona bene. Ma il motivo per cui non viene mostrato è che quando fai clic sulla barra di ricerca, func searchBarTextDidBeginEditing(searchBar: UISearchBar) non ha alcun effetto su di esso perché potresti dimenticarti di impostare il delegato per la barra di ricerca.

Ho provato il codice e dopo aver impostato il delegato funziona correttamente. Inoltre si nasconde dietro la barra di navigazione come la posizione Y è 0. La soluzione è,

  1. Aggiungere il UISearchBarDelegate alla classe
  2. In viewDidLoad()

    override func viewDidLoad(){ 
        super.viewDidLoad() 
        searchcontroller.searchbar.delegate = self 
        } 
    
  3. In searchBarTextDidBeginEditing

    func searchBarTextDidBeginEditing(searchBar: UISearchBar) {   
    
        var myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: searchController.searchBar.frame.height + 20, width: view.frame.size.width, height: 40.00)) 
        myTextField.backgroundColor = UIColor.purpleColor() 
        myTextField.text = "Location" 
        myTextField.borderStyle = UITextBorderStyle.None 
        searchController.view.addSubview(myTextField) 
    } 
    

Spero che aiuti.