iOS SearchBar Programmatically

Rayane Xavier
Apple Developer Academy | Mackenzie
2 min readApr 17, 2020

Ao desenvolver uma aplicação que trabalha com uma grande quantidade de dados é necessário auxílio para filtrá-los e assim encontrar o termo desejado, sendo a SearchBar a melhor ferramenta para alcançar este objetivo, prova disto é ser comumente encontradas nas aplicações, para as mais variadas pesquisas.

Portanto, neste artigo irei passar uma das formas de criar uma SearchBar.

Primeiramente, a SearchBar poderá ser adicionada no storyboard, esta deverá estar acima das células pré-definidas na TableView.

Porém, caso deseje inclui-lá via código, seguem abaixo um exemplo:

Nesta linha criamos uma UISearchController inicializada com resultado de valor nulo com nome searchController.

Logo em seguida, teremos que definir uma forma para que a View responda aos comandos da barra de pesquisa, portanto, é necessário implementar o UISearchResultsUpdating. Este protocolo define métodos para atualizar os resultados com base nas informações que o usuário insere na barra de pesquisa.

Não sendo necessário, mais por fins didáticos e por organização do código criarei uma extensão fora da classe da View e adicionarei esta funcionalidade:

Como podemos ver acima, a extensão implementa na View o método UISearchResultsUpdating, que possui a função updateSearchResults pré-definida, que armazena os resultados inseridos na Search. Neste caso a "searchController" que é uma UISearchController, essa função utiliza o filtro por texto "filterContentForSearchText", utilizado em cima nossa search "searchController", que é uma ".searchBar" sempre de texto ".text!".

Definindo esses conceitos, está na hora de definir o que será filtrado e como será filtrado.

Primeiramente, será necessário criar uma variável que irá armazenar as informações filtradas e não filtradas dentro da classe:

Em seguida, deveremos definir como a SearchBar poderá identificar que está sendo filtrado e assim trocar da variável "allData" para "filteredData" e armazenar a informação correta na variável.

Para isso é necessário utilizar o código a seguir:

Nesta duas funções muitas coisas acontecem, portanto iremos por partes:

A primeira função apresentada, que seria a searchBarIsEmpy, irá retornar verdadeiro quando a condição interna estiver sendo atendida, neste caso se a searchController, que é a searchBar contém texto, então será filtrada, caso contrário, se manterá sem filtros.

A segunda função é a mais importante, ela que define como será feita a procura através das informações, e armazena as informações filtradas na variável desejada.

Seguindo esta linha de raciocínio, primeiramente declaramos que o searchText será do tipo string, e para o filterContentForSearchText acontecer é necessário armazenar dentro da variável as informações filtradas, dentro do array das informações que existem e se isso retornará neste exemplo o nome da informação, contida no texto, sendo que o método lowercased() transforma todas as letras maiúsculas em minúsculas.

Após esse processo a searchBar estará funcional, porém, caso precise fazer uma customização, passarei alguns comandos que poderam ser utilizados abaixo, estas linhas de código deverão estar dentro do viewDidLoad:

--

--