Qual a diferença de XIB para NIB (iOS)

Para entender esta diferença é importante compreender basicamente quais são os 2 frameworks utilizados para programação iOS:

  1. O primeiro e mais antigo é o UIKit, ele foi inicialmente construído para ser utilizado com a linguagem Objective-C, porém foi atualizado e adaptado para ser empregado em Swift, sendo uma linguagem mais nova e mais fácil de se utilizar. Por ser o primeiro framework ele ainda é o mais utilizado de iOS.
  2. O segundo é o SwiftUI, esse framework foi construído para poder trazer paradigmas mais novos para o desenvolvimento iOS, por ser uma nova maneira de desenvolvimento novo optou-se por utilizar o Swift como linguagem principal, removendo completamente o Objective-C do framework.

A explicação rápida da diferença do UIKit para SwiftUI foi importante, pois XIBs e NIBs são relacionados diretamente com Objective-C, ou seja, esses dois conceitos só existem no UIkit já que o SwiftUI não utiliza Objective-C.

Esse artigo será mais teórico, focado em mostrar a diferença entre os dois assuntos, abaixo segue um artigo mostrando como utilizar o XIB para criar componentes reutilizáveis.

NIB e XIB

NIB significa “NeXTSTEP Interface Builder” e XIB significa “Xcode Interface Builder”, pelo nome é possível perceber que ambos então relacionados a construir interfaces. Eles conseguem criar componentes onde são construídos de uma maneira que geralmente os tornam reutilizáveis, ou seja, você pode usar esse componente em outras telas sem precisar refazer esse item do zero.

O XIB é onde podemos construir esse componente, sendo possível utilizar em sua estrutura os componentes que são filhos de uma UIView, ou seja, é possível adicionar qualquer componente primitivo do iOS, por exemplo: UIScrollView, UITextfield e também qualquer outra XIB que você construiu que seja filha de UIView. Nela também é possível mudar o visual desses componentes alterando sua altura, largura, cor, posicionamento na tela.

O NIB é a UIView que já foi inicializada, ou seja, que está em memória, com esse objeto já carregado é possível alterar por código os dados mostrados pelo componente e mudar a sua estrutura, adicionando e removendo componentes, mudando sua cor, alterar o posicionamento dos itens internos, etc.

Exemplo

Na figura 1 temos um cartão construído usando XIB, ele é uma UIView que será reutilizada posteriormente, para mostrar um conjunto de cartões.

figura 1.: Exemplo de um cartão feito em XIB

No código abaixo, entre a linha 7 e 10 temos o init chamado ao inicializar a view programaticamente e entre a linha 12 e 15 temos o init chamado quando é inicializado através do método visual. Nos dois construtores chamamos o método standartIntit da linha 17, onde fica a configuração para que o swift saiba como inicializar a XIB como NIB.

Código 1.: Configuração da Nib do cartão

Vantagens

A utilização dessas ferramentas nos possibilita criar componentes customizados, para poderem ser reaproveitados em outros componentes e telas, tornando o desenvolvimento mais rápido e prático.

Na figura 2 temos outra XIB que será uma lista roláveis de cartões, podemos perceber que a Stack View, possui o componente cartão construído no bloco anterior.

figura 2.: Exemplo de um scroll de cartões

O código é igual da classe view da figura 1, a diferença é a linha 16, onde dizemos que a XIB a ser inicializada se chama “CardsScrollView”.

Código 2.: Configuração da Nib do scroll de cartões

Na figura 3, podemos observar o reaproveitamento de componentes de maneira mais clara, pois colocamos a XIB de rolagem de cartões em uma tela, sem precisar de realizar nenhuma configuração extra nela, já que toda a configuração da view foi efetuada no item anterior.

figura 3.: Reutilizando o scroll de cartões na view

Na imagem 4 observamos o funcionamento dos componentes construídos anteriormente.

Figura 4.: demonstração de reutilização de código

--

--