Skip to content
Menu
CDhistory
CDhistory

Storyboards, XIBs, e Código

Posted on Setembro 6, 2021 by admin
Recursos

Descarregue a sua cópia gratuita de
O manual em falta
Para um desenvolvimento rápido

O guia que gostaria de ter quando comecei

Join 20,000+ Desenvolvedores Aprendendo Sobre Desenvolvimento Swift

Baixe sua cópia gratuita

O projeto Photos usa exclusivamente storyboards para desenhar e criar controladores de visualização. Neste episódio, eu mostro que o padrão do coordenador não está limitado a storyboards. Você também pode usar o padrão coordenador se preferir arquivos XIB em vez de storyboards. Se preferir não usar nenhum dos dois, então isso também é possível. Não importa como você projeta e cria os controladores de visualização do seu projeto.

  • Starter Project
  • Storyboards
  • XIBs
  • Code
  • What’s Next?

Starter Project

O projeto inicial deste episódio é funcionalmente idêntico ao projeto final do episódio anterior. Há algumas diferenças que eu quero apontar, no entanto. A classe TermsViewController já não está em conformidade com o protocolo Storyboardable e agora tem três subclasses, TermsViewControllerStoryboard, TermsViewControllerXIB, e TermsViewControllerCode.

A classe TermsViewControllerStoryboard é idêntica à classe TermsViewController do episódio anterior. A interface do usuário da classe TermsViewControllerStoryboard é definida no Main.storyboard. Podemos instanciar uma instância da classe invocando o método instantiate() do Storyboardable protocol.

A interface do usuário da classe TermsViewControllerXIB está definida em TermsViewControllerXIB.xib. A classe TermsViewControllerXIB define uma propriedade estática, variável, nibName, para evitar o uso de literais de string. Esta é similar à propriedade storyboardIdentifier definida em Storyboardable.swift.

Como o nome implica, a classe TermsViewControllerCode não tem um link para um storyboard ou para um arquivo XIB. A interface do usuário é criada em código. Isto obviamente resulta em um pouco mais de código. Vamos dar uma olhada em cada um desses controladores de visualização e explorar como eles se encaixam no padrão coordenador.

Storyboards

Storyboards já existem há vários anos e a Apple encoraja os desenvolvedores a usá-los. Eu uso storyboards na maioria dos projetos em que trabalho. Xcode cria automaticamente um storyboard quando você cria um projeto novo, mas eu recomendo fortemente que você use vários storyboards menores ao invés de um storyboard grande. Ao utilizar vários storyboards menores, você pode evitar conflitos de fusão mais facilmente e trabalhar com storyboards menores é mais rápido e menos complexo.

Segues são uma característica chave dos storyboards, mas eu nunca os utilizo em combinação com o padrão do coordenador. Enquanto é possível usar seguimentos em combinação com o padrão coordenador, um seguimento envolve o controlador de visualização no fluxo da aplicação e isso é algo que queremos evitar. Lembre-se que os coordenadores do projeto lidam com o fluxo da aplicação. Um view controller não precisa saber nada sobre o fluxo da aplicação e não precisa saber sobre outros view controllers.

Even sem segues, os storyboards têm seu valor. Eu sempre divido projetos de médio a grande porte em módulos. Cada módulo tem um storyboard, que contém os controladores de visualização do módulo.

Open TermsCoordinator.swift e navego para o método showTerms(). A implementação é idêntica à do projeto terminado do episódio anterior. A única diferença é o nome da classe view controller. O termo coordenador instancia a classe TermsViewControllerStoryboard em vez da classe TermsViewController class.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerStoryboard.instantiate() // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

XIBs

XIBs existem desde os primeiros dias do desenvolvimento do Cocoa. Eles não têm algumas características em comparação com storyboards, mas ainda têm o seu valor. Eu uso principalmente XIBs para componentes reutilizáveis, tais como células de visão de tabela e células de visão de coleção.

Termos AbertosViewControllerXIB.xib. A interface do usuário da classe TermsViewControllerXIB é idêntica à da classe TermsViewControllerStoryboard no Main.storyboard. Abra o TermsCoordinator.swift e revisite o método showTerms(). Para criar uma instância da classe TermsViewControllerXIB, invocamos o inicializador init(nibName:bundle:), passando no nome do arquivo XIB e uma referência ao pacote contendo o arquivo XIB.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerXIB(nibName: TermsViewControllerXIB.nibName, bundle: .main) // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

Code

Também é possível criar a interface do usuário dos controladores de visualização do projeto em código. Se você não gosta de storyboards ou arquivos XIB, então esta é a sua única opção. Não tenho usado muito esta opção desde a introdução dos storyboards, mas pode ser útil de tempos em tempos.

Criar e inicializar um controlador de visualização em código é útil se esse controlador de visualização tiver uma interface de usuário complexa ou dinâmica. Criar e inicializar controladores de visualização em código tem outro benefício interessante. Ele permite a injeção do inicializador, uma forma de injeção de dependência. Eu discuto a injeção de dependência no próximo episódio.

Para criar uma instância da classe TermsViewControllerCode, invocamos o init() initializer. Isto é equivalente a invocar o init(nibName:bundle:) initializer e passar em nil para ambos os argumentos.

// MARK: - Helper Methodsprivate func showTerms() { // Initialize Terms View Controller let termsViewController = TermsViewControllerCode() // Install Handlers termsViewController.didCancel = { in self?.finish() } // Present Terms View Controller presentingViewController.present(termsViewController, animated: true)}

What’s Next?

O padrão coordenador é um padrão flexível. Não importa se você usa storyboards, arquivos XIB, ou nenhum dos dois. Você pode usar seguimentos, mas lembre-se que você está violando um princípio fundamental do padrão coordenador se você o fizer. Um view controller não precisa saber sobre o fluxo da aplicação e não deve saber sobre outros view controllers.

Deixe uma resposta Cancelar resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Artigos recentes

  • Acela está de volta: NYC ou Boston por $99
  • Entrada OMIM – # 608363 – CHROMOSOME 22q11.2 SÍNDROME DE DUPLICAÇÃO
  • Kate Albrecht’s Parents – Learn More About Her Father Chris Albrecht And Mother Annie Albrecht
  • Temple Fork Outfitters
  • Burr (romance)

Arquivo

  • Fevereiro 2022
  • Janeiro 2022
  • Dezembro 2021
  • Novembro 2021
  • Outubro 2021
  • Setembro 2021
  • Agosto 2021
  • Julho 2021
  • Junho 2021
  • Maio 2021
  • Abril 2021
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語
©2022 CDhistory | Powered by WordPress & Superb Themes