Estático – Sam intudo

Estático – Sam intudo


Postado em

Hoje, abrimos uma estrutura para o iOS que usamos uma tonelada chamada de estática internamente. É uma estrutura Swift 2 para trabalhar com vistas estáticas da tabela. Nós o usamos para alimentar toneladas de telas em um próximo projeto. Também tornou as coisas baseadas em visualização de prototipagem de tabela super produtivas.

O objetivo da Static é separar os dados do modelo da apresentação. Rowareia SectionS são seus “modelos de visualização” para suas células. Você simplesmente especifica uma classe de células para usar e que lida com toda a apresentação. Veja a seção de uso abaixo para obter detalhes.

Prédio

A estática está escrita no Swift 2, então o Xcode 7B3 é necessário. Não há dependências além das estruturas do sistema.

Instalação

Cartago é a maneira recomendada de instalar estática. Adicione o seguinte ao seu arquivo Cart:

Para instalação manual, é recomendável adicionar o projeto como um subprojeto ao seu projeto ou espaço de trabalho e adicionar a estrutura apropriada como uma dependência de destino.

Uso

Um exemplo de aplicativo está incluído demonstrando a funcionalidade da estática. Confira isso primeiro se você preferir aprender pelo exemplo.

Começando

Para usar estático, você precisa definir Rowareia Sections para descrever seus dados. Aqui está um exemplo simples:

import Static

Section(rows: (
    Row(text: "Hello")
))

Você pode configurar Sectionareia Rows para qualquer coisa que você quiser. Aqui está outro exemplo:

Section(header: "Money", rows: (
    Row(text: "Balance", detailText: "$12.00", accessory: .DisclosureIndicator, selection: {
        // Show statement
    }),
    Row(text: "Transfer to Bank…", cellClass: ButtonCell.self, selection: {
        // Show transfer to bank modal
    })
), footer: "Transfers usually arrive within 1-3 business days.")

Como isso é rápido, podemos fornecer métodos de instância em vez de blocos embutidos para seleções. Isso torna as coisas muito boas. Você não precisa ligar os caminhos de índice em um tableView:didSelectRowAtIndexPath: não mais!

Aparência de personalização

O Row nunca tem acesso à célula. Isso é por design. O Row Não deve se importar com sua aparência, outro especificando o que lidará com isso. Na prática, isso tem sido muito bom. Nossas células têm uma responsabilidade.

Existem várias células personalizadas fornecidas:

  • Value1Cell – Esta é a célula padrão. É uma planície UITableViewCell com o .Value1 estilo.
  • Value2Cell – Simples UITableViewCell com o .Value2 estilo.
  • SubtitleCell – Simples UITableViewCell com o .Subtitle estilo.
  • ButtonCell – Simples UITableViewCell com o .Default estilo. O textLabel‘s textColor está definido para a célula tintColor.

Tudo isso em conformidade com CellType. A essência do protocolo é um método:

func configure(row row: Row)

Isso é chamado por DataSource (que veremos mais em um minuto) para definir a linha na célula. Existe uma implementação padrão fornecida pelo protocolo que simplesmente define o Row‘s text na célula textLabeletc. Se você precisar fazer coisas personalizadas, este é um ótimo lugar para se conectar.

Row também tem um context propriedade. Você pode colocar o que quiser aqui que a célula precisa saber. Você deve tentar usá -lo o mais rápido possível.

Acessórios de linha personalizados

Row tem um accessory propriedade que é um Accessory enum. Isso tem casos para todos UITableViewCellAccessoryType. Aqui está uma linha com uma marca de seleção:

Row(text: "Buy milk", accessory: .Checkmark)

Fácil o suficiente. Alguns dos tipos de acessórios do sistema são selecionáveis (como esse pouco eu botão com um círculo ao redor). Você pode fazer isso e lidar com a seleção como esta:

Row(text: "Sam Soffes", accessory: .DetailButton({
  // Show info about this contact
}))

Novamente, você pode usar qualquer função aqui. Os métodos de instância são ótimos para isso.

Há um caso adicional chamado .View Isso leva uma visualização personalizada. Aqui está um Row com uma visualização de acessório personalizada:

Row(text: "My Profile", accessory: .View(someEditButton))

Visualizações de cabeçalho e rodapé personalizados

Section tem propriedades para header e footer. Estes tomam um Section.Extremity. Este é um enumeração com Title e View casos. Extremity é StringLiteralConvertible você pode simplesmente especificar seqüências Começando seção.

Para uma visão personalizada, você pode simplesmente especificar o View caso:

Section(header: .View(yourView))

A altura retornada à vista da tabela será a vista bounds.height Portanto, certifique -se de que já está dimensionado corretamente.

Trabalhando com a fonte de dados

Para conectar o seu Sectionareia Rows para uma visualização de tabela, simplesmente inicialize um DataSource:

let dataSource = DataSource()
dataSource.sections = (
    Section(rows: (
        Row(text: "Hello")
    ))
)

Agora atribua sua visualização de tabela:

dataSource.tableView = tableView

Fácil assim! Se você modificar sua fonte de dados posteriormente, ele atualizará automaticamente a visualização da tabela para você. É importante que você não mude a visualização da tabela dataSource ou delegate. O DataSource precisa ser aqueles para que possa lidar com eventos corretamente. O propósito de Static é abstrair tudo isso longe de você.

Embrulhando

Há um fornecido TableViewController que configura um DataSource para você. Aqui está um pequeno exemplo:

class SomeViewController: TableViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        dataSource.sections = (
            Section(rows: (
                Row(text: "Hi")
            )),
            // ...
        )
    }
}

Aproveitar.



Source link

Postagens Similares

Deixe um comentário

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