Domanda

Quello che voglio:

Un UIView con un UISearchBar in alto. Iniziare a modificare il Searchbar offusca la vista corrente e mostra i risultati della ricerca da un altro controller [UITableView].

Quello che ho provato:

In Interface Builder:

  • aggiungere una "barra di ricerca e di ricerca Controller" al UIView.
  • aggiungere un oggetto segnaposto per il mio UITableViewController
  • aggiungere un oggetto UITableView e impostarlo come la vista per l'UITableViewController
  • impostare il delegato per l'UISearchBar al UITableViewController
  • impostare tutti i punti vendita sul UISearchDisplayController al UITableViewController

In Code:

  • aggiungere i protocolli UISearchBarDelegate, UISearchDisplayDelegate al UITableViewController

Quello che sto ricevendo:

Tapping per modificare il campo di ricerca si blocca l'applicazione. Nessun messaggio di errore, e solo il metodo "viewDidLoad" nel UITableViewController viene chiamato.

In conclusione:

Come posso fare per utilizzare un controller esterno per un UISearchBar che è in un UIView?

È stato utile?

Soluzione

Ok, così ho capito. Giuro questo è una delle prime cose che ho provato, ma ovviamente non ho fatto in modo corretto.

Nel mio UIViewController (quello che ha l'UISearchBar in esso), ho un'istanza di un UISearchDisplayController:

// sb = IBOutlet UISearchBar  
sc = [[SearchController alloc] initWithStyle:UITableViewStylePlain];  
sdc = [[UISearchDisplayController alloc] initWithSearchBar:sb contentsController:sc];  
sb.delegate = sc;  
sdc.delegate = sc;  
sdc.searchResultsDelegate = sc;  
sdc.searchResultsDataSource:sc = sc;  `

Dove SearchController è il mio sottoclasse di UITableViewController e si adatta i protocolli UISearchBarDelegate e UISearchDisplayDelegate.

Ora che ci penso, utilizzando uno collegato da IB probabilmente funzionerebbe altrettanto bene (e allo stesso modo) ...

Così le opere di cui sopra per me, ma ora i risultati tableView non rivela se non aggiungo manualmente alla principale vista:. [self.view addSubview:sc.tableView]; ma questa è foraggio per un'altra domanda, suppongo

Non c'è alcuna documentazione sul web (per quanto riguarda il mio google-fu è interessata) di un UISearchDisplayController non-auto-delega, quindi speriamo che questo aiuta un altro niubbo Obj-C, un giorno.

Altri suggerimenti

Per prima cosa, se la classe controller si estende da UITableViewController, non si può avere una barra di ricerca in esso se si sta utilizzando Interface Builder. Invece, si estendono dal UIViewController e conformi ai protocolli di origine e delegato tabella di dati per conto proprio.

Ma sì, per la sua risposta ad essere una buona per voi, si sta andando ad avere per aggiungere un po 'di codice o qualcosa alla tua domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top