Explorando protocolos e um UITableViewController

O Master # 8208-Detail modelo Aplicativo 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.

exibições de tabela em ambos OS X e iOS integrar muito bem com o Core Data- a combinação é frequentemente utilizado como é em Locatapp. Esta excursão nos quadros ajuda a familiarizá-lo com Real # usos 8208 do mundo de protocolos e delegados.

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

A arquitectura 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 adota a UITableViewDelegate protocolo).

A fonte de dados proporciona a funcionalidade envolvida com a mesa 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 gerir edição da estrutura da tabela (em movimento e exclusão de linhas).

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 a delegação e os protocolos

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

Juntos, UITableViewController e seus protocolos (UITableViewDataSource e UITableViewDelegate) Fornecem um poderoso conjunto de funcionalidades que é fácil para você usar e personalizar. Isto tudo pode ter sido escrito como uma classe gigantesca, mas dividindo-a 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 remonta a classe base e os protocolos em um grande objeto.

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, eo outro tem uma imagem de lista da tabela. Você quer que a imagem lista de tabela.

    image0.jpg

    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) Aparecem como pontos de venda. Eles estão ligados ao Dominar 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 Dominar 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.

    image1.jpg

    Quando você faz ligaçõ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 inspector de identidade na área de utilidades (mostrado no canto superior direito da figura anterior).

    Como você vê, Dominar é uma instância 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, na Locatapp).

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

    A resposta é que MasterViewController é uma subclasse de UITableViewController.

    image2.jpg
  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 sobre a referência à documentação de referência para UITableViewController.

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

    image3.jpg

    UITableView nº 173-Controller é compatível com ambas UITableViewDataSource e para UITableViewDelegate. Isso significa que ele ou subclasses de que deve estar em conformidade com os protocolos. (Realmente não importa se é a classe original - UITableViewController Neste caso - ou uma subclasse, tal como MasterViewController que se conforma. Os métodos e propriedades necessários devem estar presentes quando você construir o projeto e executá-lo.

menu