Explorando protocolos e um uitableviewcontroller

O modelo Master-Detail Aplicação em Swift, e assim o Locatapp, utiliza uma UITableViewController

para exibir a lista principal de eventos. exibições de tabela são muito comuns em Cocoa Touch e, no Mac, em Cocoa. Uma grande parte do trabalho é feito para você já, e dois protocolos desempenham um papel fundamental na estrutura.

visualizações de mesa em ambos OS X e iOS integrar muito bem com o Core Data- a combinação é freqüentemente usado como no Locatapp. Esta excursão nos quadros ajuda a familiarizar-se com mundo real usa de protocolos e delegados.

O modelo de aplicativo Master-Detail contém os protocolos que você precisa. Eles já estão configurados para você no modelo, mas você deve examinar o que você tem.

Video: Creating a UITableViewController with sections in iOS 9

A arquitetura básica é que UITableViewController é projetado para trabalhar em conjunto com dois protocolos: uma fonte de dados (uma classe que adota a UITableViewDataSource) E um delegado (uma classe que adopta a UITableViewDelegate protocolo).

A fonte de dados proporciona a funcionalidade envolvida com a tabela e os seus dados. Seus métodos necessários especificar o número de linhas e seções na tabela, juntamente com seus títulos e headers- seus métodos também gerenciar edição da estrutura da tabela (se movendo e excluindo linhas).

Video: iOS Development Course Beginner - 29. UITableView Static Cells

O protocolo Ver tabela delegado lida com a aparência da tabela: entalhes, alturas de linha, a selecção, o conteúdo de edição tabela (em oposição à estrutura, que é tratado pelo protocolo de fonte de dados), e bate numa célula, e a aparência dos conteúdos de uma célula.

Olhando para delegação e protocolos

O protocolo delegado fornece a interface de utilizador. Seus métodos gerenciar seleções e edição de conteúdo.

Juntos, UITableViewController e os seus protocolos (UITableViewDataSource e UITableViewDelegate) Fornecem um poderoso conjunto de funcionalidades que é fácil para você usar e personalizar. Isto tudo pode ter sido escrita como uma classe gigantesca, mas dividindo-o em uma classe principal e dois protocolos, é mais fácil de manter (e, para muitas pessoas, mais fácil de entender).

A implementação comum em muitos exemplos e modelos Xcode basicamente reagrupa a classe de base e os protocolos para um objecto de grandes dimensões.

Definindo delegados no Interface Builder

Você pode atribuir uma instância de uma classe para o delegar propriedade em UITableView. Você não tem que se preocupar com isso porque, antes de tudo, isso é uma questão framework / interface e este livro enfoca a linguagem Swift, e em segundo lugar, ele já está feito para você na maioria dos modelos e exemplos. Aqui está uma revisão de como ele é feito.

  1. Aberto Main.storyboard no Xcode usando Interface Builder (o editor padrão para esse arquivo).

  2. Abra o esboço do documento, se necessário.

  3. Abrir Cena Mestre, o controlador Master (círculo amarelo), e depois Table View.

    Haverá duas seções Cena Mestre no esboço do documento. Abra cada um e em seguida olhar para o controlador mestre no círculo amarelo. Um deles tem uma seta de navegação, ea outra tem uma imagem de lista da tabela. Você quer que a imagem lista de tabela.

    Quando você olha para o Table View dentro Main.storyboard usando Interface Builder no Xcode e mostrado aqui, você vai ver que as duas declarações mostrado anteriormente (delegar e fonte de dados) Mostram-se como pontos de venda. Eles estão ligados ao mestre objeto no esboço do documento, em vez de estar conectado em seu código.



  4. Select Master (o círculo amarelo).

    Como você pode ver, quando você seleciona mestre no esboço do documento de Interface Builder, você pode ver o outro lado da conexão: as duas saídas que fazem referência (fonte de dados e delegar) Estão ligados a Table View.

    Video: UITableView with Swift Series Pt 1: Use Table View

    Quando você faz conexões como estes no Interface Builder, você pode sempre olhar para ele de ambos os lados. É essa conexão no modelo que associa a exibição de tabela com o Mestre.

  5. Com mestre selecionado, olhar para o inspetor de identidade na área de utilidades (mostrado no canto superior direito da figura anterior).

    Como você vê, mestre é um exemplo de MasterViewController. Você pode ver que, destacando-o e olhando para Ajuda Rápida. Lá você vai ver que MasterViewController é uma subclasse de UITableViewController.

  6. Olhar dentro MasterViewController.swift para ver a sua declaração no modelo (e, assim, em Locatapp).

    Video: iOS UITableViewController in Swift 3 using Xcode 8

    Não há nenhuma referência aos protocolos. Como eles entrar no código?

    A resposta é que MasterViewController é uma subclasse de UITableViewController.

  7. Realçar UITableViewController na declaração mostrado e Ajuda Rápida aberto.

    Lá você pode encontrar um link para a sua referência.

  8. Se você clicar na referência à documentação de referência para UITableViewController.

    Você vai ver a documentação para UITableViewController como mostrado.

    UITableViewController conforma-se tanto UITableViewDataSource e para UITableViewDelegate. Isso significa que ele ou subclasses de que devem obedecer a esses protocolos. (Realmente não importa se é a classe original - UITableViewController neste caso - ou uma subclasse como MasterViewController que se conforma. Os métodos e propriedades necessários devem estar presentes quando você construir o projeto e executá-lo.


Publicações relacionadas