Ho appena avuto la stessa richiesta, e mi si avvicinò con una soluzione di cotto a metà, ma di lavoro che non comporta la riscrittura UISearchDisplayController.
(FINE risultato: un UITableView --that risposte a shouldReloadTableForSearchString-- sovrapposto sulla parte superiore del UICollectionView, una volta che si clicca la ricerca è respinto, e avete i vostri risultati nel CollectionView Continuate a leggere se questo è di interesse.)
Nell'IB ha creato un UIViewController in cui ho inserito (vedi screenshot): una vista per scopi di layout -> in cui ho prima rilasciato un UISearchBar e un controller di visualizzazione. Nella stessa vista (affiancata) ho rilasciato un UICollectionView con un UICollectionViewCell personalizzato. Poi ho inserito un UITableViewProvider (con un UITableCell personalizzato, ma non è obbligatorio, puoi anche ignorare UITabBarItem e l'elemento Nav nello screenshot, che è irrilevante)
Ho impostato l'altezza di UITableView a 0 e cablato tutti gli Outlets e delegati, e il risultato netto è il seguente, quando il cursore entra in UISearchBox, l'overlay UITableView in cima a UICollectionView, come si digita il shouldReloadTableForSearchString del e i risultati appaiono nella tabellaView; Su searchBarSearchButtonClicked ho semplicemente impostato il dataSource di UICollectionView e chiamato reloadData sul suo outlet, et Voila.
Si potrebbe pensare che Apple dovrebbe generare il controller di visualizzazione della ricerca; forse in una versione futura?
(questo funziona perché questo è il modo in cui il controller UISearchDisplay è ottimizzato, IIRC c'è in realtà un UITableView per l'immissione di caratteri impilati uno sopra l'altro)
(non inviare codice perché c'è un po 'coinvolto; plz chiedere se tutto ciò che non è semplice)
Ehi, hai fatto qualche progresso in questa domanda? Sto cercando di fare lo stesso ... Tutto quello che ho fatto fino ad ora è aggiungere una barra di ricerca come intestazione di sezione, ma in realtà non rende bene. – aspyct
Non ho niente :(. –
Chiunque potrebbe usare anche questo ... sembra che la soluzione migliore a questo punto potrebbe essere quella di sottoclasse UISearchBar/UISearchDisplayController e insegnare loro come interagire con UICollectionView. – Raconteur