Você tem uma ideia para um aplicativo, mas não tem o conhecimento de programação para começar a construí-lo? Nesta série semanal de blogs, How to Unleash Your Inner App Developer, vou levar você, o não programador, passo a passo pelo processo de criação de aplicativos para iPhone, iPod touch e iPad. Junte-se a mim a cada semana nesta aventura, e você experimentará como pode ser divertido transformar suas ideias em realidade! Esta é a parte 12 da série. Se você está começando agora, confira o início da série aqui (esta postagem foi atualizada para Swift 1.2, iOS 8 e Xcode 6.3.)
Um dos melhores livros de desenvolvimento de software de todos os tempos é o livro de Steve McConnell Código concluído . Seja você um desenvolvedor de software experiente ou um programador novo em folha, independentemente da plataforma ou linguagem em que você escreve o código, eu recomendo a leitura deste livro. Isso mudará sua maneira de pensar e melhorará muito a qualidade do código que você escreve.
'Agregação de software'—Construindo ao longo do tempo
Depois de ler Código concluído anos atrás, a comparação do livro entre desenvolvimento de software e cultivo de ostras realmente me chamou a atenção. McConnell usou o termo acréscimo de software para descrever o processo de construção de software ao longo de um período de tempo. A palavra 'acreção' refere-se a qualquer crescimento ou aumento de tamanho por uma adição ou acumulação externa gradual. É assim que uma ostra faz uma pérola; adicionando gradualmente pequenas quantidades de carbonato de cálcio ao longo de um período de tempo, uma pérola cresce cada vez mais.
Com o desenvolvimento de software incremental, você começa criando a versão mais simples de um sistema que será executado. Você cria um esqueleto forte o suficiente para manter o sistema real conforme ele é desenvolvido, assim como uma ostra que começa a construir uma pérola com um pequeno grão de areia. Isso é exatamente o que fizemos até agora nesta coluna com o Revisão do iApps aplicativo. Construímos primeiro um protótipo do aplicativo e, gradualmente, ao longo do tempo, adicionamos código a cada semana com o objetivo final de criar um aplicativo totalmente funcional.
Fortalecendo seu código
Como parte do processo incremental de construção de um aplicativo, você precisa dar uma olhada no seu código e fazer a pergunta: 'O que pode dar errado?' Uma das maiores variáveis a serem consideradas são seus usuários. Eles irão surpreendê-lo constantemente usando seu aplicativo de maneiras que você não espera. Trabalhei com algumas equipes de desenvolvimento ao longo dos anos e ainda não vi um caso em que os desenvolvedores não ficaram surpresos ao ver as pessoas usarem seus softwares. Quando se trata de desenvolvimento de aplicativos, é fundamental que você permita que outras pessoas chutem os pneus do seu aplicativo antes de enviá-lo para a App Store. O feedback deles certamente melhorará a experiência do usuário do seu aplicativo.
Vamos dar uma olhada Revisão do iApps , identifique as áreas onde podem ocorrer problemas e, em seguida, fortaleça nosso código para evitar problemas. Você pode obter o projeto que concluímos até agora em esse link . Se você ficar preso seguindo as instruções passo a passo, você pode obter o projeto concluído para este post em esse link .
Como está agora, se o usuário não inserir um nome de aplicativo ou comentários no Escrever análise cena, o aplicativo não trava; mas quando eles tentarem compartilhar a avaliação no Twitter, eles receberão um tweet vazio, exceto pelo hífen, conforme mostrado em figura 1 .
![]() |
Figura 1 - O usuário pode enviar um tweet vazio. |
Então, como devemos resolver esse problema? É uma prática recomendada examinar os aplicativos iOS integrados para ver como a Apple lida com uma situação específica e usar isso como um guia para nossos próprios aplicativos. Por exemplo, ao especificar uma conta do Twitter no Definições aplicativo, o Entrar opção é desativada até que o usuário insira um Nome de usuário e Senha ( Figura 2 ).
![]() |
Figura 2 - O botão Entrar fica desabilitado até que o usuário insira um Nome de usuário e Senha . |
este também é uma boa abordagem para Escrever análise cena. Só queremos habilitar o botão Compartilhar se houver texto em ambos os Nome do aplicativo campo de texto e visualização de texto de comentários. Isso significa que cada vez que o usuário digita um caractere, precisamos verificar os dois controles da interface do usuário. Se um estiver vazio, o botão Compartilhar deve ser desabilitado. Se ambos os controles contiverem texto, o botão Compartilhar deverá ser ativado. Temos que realizar essa verificação para cada caractere que o usuário digitar, pois eles podem pressionar o botão excluir key, deixando um dos controles da interface do usuário vazio.
Criando uma saída de botão de compartilhamento
Como precisamos acessar o botão Compartilhar para habilitá-lo e desativá-lo, nosso primeiro passo é criar uma saída para o botão. Para fazer isso, siga as etapas listadas abaixo.
- Abra o Revisão do iApps projeto em Xcode.
- No Project Navigator, selecione o storyboard principal Arquivo.
- No Escrever análise cena, clique no botão Compartilhar no canto superior direito da cena.
- Vá para o Inspetor de Atributos (o terceiro botão à direita na barra de ferramentas do Inspetor) e desmarque o Habilitado caixa de seleção como mostrado em Figura 3 . Isso faz com que o botão Compartilhar pareça desabilitado em tempo de design e quando a cena aparece pela primeira vez em tempo de execução;
![]() |
Figura 3 - Desmarque a Habilitado caixa de seleção. |
- Em seguida, exiba o Editor Assistente clicando no botão central na editor grupo de botões no canto superior direito da janela do Xcode. Isso deve exibir o WriteReviewViewController.swift arquivo no Editor Assistente.
- Segure o ao controle tecla para baixo, clique no botão Compartilhar e arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 4.
![]() |
Figura 4 - Crie uma saída para o botão Compartilhar. |
- Quando você vê o Inserir Coleção de Outlet, Ação ou Outlet pop-up, solte o botão do mouse e o ao controle chave. Isso exibe o pop-up Inserir tomada. Digitar btnShare como a saída Nome e depois clique no Conectar botão ( Figura 5 ). Isso adiciona um novo btnShare propriedade de saída para o arquivo de código.
![]() |
Figura 5 - Crie um outlet chamado btnShare . |
Configurando o campo de texto do nome do aplicativo
Agora vamos configurar o Nome do aplicativo campo de texto para ativar e desativar o botão Compartilhar. Primeiro, precisamos criar uma saída que possamos usar para fazer referência ao campo de texto.
- Control+Clique no Nome do aplicativo campo de texto na superfície de design e, em seguida, arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 6 .
![]() |
Figura 6 - Crie uma saída para o campo de texto. |
- No pop-up Create Outlet, defina o Nome campo para txtAppName e clique em Conectar ( Figura 7 ). Isso cria uma nova propriedade de saída chamada txtAppName .
![]() |
Figura 7 - Digite txtAppName no Nome campo. |
- Com o Nome do aplicativo campo de texto ainda selecionado, vá para o Inspetor de Conexões (o botão na extrema direita na barra de ferramentas Inspetores). Debaixo de Eventos enviados seção, clique na conexão bem à direita da Valor alterado evento e arraste para baixo no WriteReviewViewController.swift arquivo como mostrado em Figura 8 . o Valor alterado O evento é acionado toda vez que o usuário insere ou exclui um caractere no campo de texto.
![]() |
Figura 8 - Crie um método de ação para o Edição alterada evento. |
- Quando o Inserir ação pop-up aparecer, solte o botão do mouse e o ao controle chave. Isso exibe o pop-up Criar método de ação ( Figura 9 ). Digitar appNameChanged como o método Nome e depois clique no Conectar botão. Isso adiciona um novo método de ação ao WriteReviewViewController.swift Arquivo. Você pode fechar o Editor Assistente agora clicando no botão esquerdo na editor grupo de botões.
![]() |
Figura 9 - Crie um método de ação chamado appNameChanged . |
- Agora vamos implementar o novo método. No WriteReviewViewController.swift arquivo de código digite o código mostrado em Figura 10 .
![]() |
Figura 10 - O código neste método habilita e desabilita o botão Compartilhar. |
Esta é a primeira vez que mostro esse tipo de código no meu blog, então vou explicar como funciona. Este é um Swift se mais declaração. Pertence a uma família de instruções condicionais e permite executar um conjunto de código ou outro com base em uma condição.
A condição que é verificada por esta declaração segue imediatamente a E se na primeira linha de código neste método. Esta condição específica contém uma comparação composta, onde dois valores são verificados. As linhas verticais duplas entre as duas condições ( || ) é um operador OR lógico. Isso significa que se a primeira condição OU a segunda condição for avaliada como verdadeiro , então o código dentro das chaves diretamente após o E se É executado. Caso contrário, o código contido nas chaves após o senão instrução é executada.
Primeiro, o contar é chamada para verificar se o número de elementos (caracteres, neste caso) do texto no tvwReview control é igual a zero, o que será se a visualização de texto estiver em branco. Se esta parte da condição for verdadeira, então o código que desabilita o botão é executado sem verificar a segunda parte da condição. Não há necessidade de verificar porque se qualquer parte da condição for verdadeira, o botão deve ser desabilitado. Se a primeira parte da condição for verdadeira, a segunda parte da condição será verificada. Se o contar função retorna zero para o texto propriedade do campo de texto, então o código que desabilita o botão é executado.
Se ambas as partes da condição forem falsas, o código na senão A instrução é executada, o que habilita o botão Compartilhar.
Configurando a visualização de texto de comentários de revisão
Agora você está pronto para configurar a visualização de texto de comentários de revisão. Temos que ter uma abordagem diferente com a visualização de texto porque não tem um Edição alterada evento como o campo de texto faz (você pode clicar na visualização de texto na superfície de design e, em seguida, ir para o Inspetor de conexões para ver o que quero dizer).
Como é o caso da visualização de texto, se você não encontrar o evento que precisa com um determinado controle de interface de usuário, seu próximo passo é verificar se o controle possui um protocolo delegado que pode ser adotado para que você possa ser notificado de eventos importantes (veja meu postagem anterior para uma discussão de delegados e protocolos). Se você olhar para o UITextView documentação, você descobrirá que há um delegar propriedade cujo tipo é um protocolo chamado UITextViewDelegate . Este protocolo contém um textViewDidChange: método ( Figura 11 ), que é exatamente o que precisamos. Como a documentação indica, esse método é chamado automaticamente no delegado quando o usuário altera o texto na exibição de texto.
![]() |
Figura 11 - A textViewDidChange: O método é chamado quando o usuário altera o texto na visualização de texto. |
Vamos adotar este protocolo agora.
- Não precisamos mais do editor Assistente, então clique no botão à esquerda no grupo de botões Editor para se livrar dele. Em seguida, no Project Navigator, selecione o WriteReviewViewController.swift arquivo de código.
- Adicione o código mostrado em Figura 12 adotar o UITextViewDelegate protocolo e lembre-se de adicionar uma vírgula após o UINavigationControllerDelegate protocolo no final da linha de código anterior;
![]() |
Figura 12 - Adoção do UITextViewDelegate protocolo |
- Agora vamos implementar o protocolo. Para fazer isso, adicione o novo e vazio textViewDidChange: método mostrado em Figura 13 diretamente abaixo do appNameAlterado: método.
![]() |
Figura 13 - Adicione o textViewDidChange: método. |
Linha por linha, precisamos do código no textViewDidChange: método para fazer exatamente o que o código está no appNameAlterado: método está fazendo. Então o que você deveria fazer? Em primeiro lugar, vamos falar sobre o que você deve não Faz.
Um dos maiores erros que desenvolvedores novatos (e infelizmente até mesmo alguns desenvolvedores experientes) cometem é copiar o código de um método e colá-lo em outro. Por que isso é um problema? Um dos seus objetivos como desenvolvedor é evitar a criação de código duplicado. Por quê? Se você tiver que fazer uma alteração no código (e eventualmente fará), isso significa que há mais de um lugar onde você deve fazer a alteração.
Então, o que você deve fazer em vez disso? Você deve dividir o código em um método separado que possa ser chamado de vários lugares em seu aplicativo. É exatamente isso que vamos fazer agora.
- Adicionar um novo, vazio isReadyToShare método como mostrado em Figura 14 diretamente abaixo do textViewDidChange: método. Ignore o ícone de erro vermelho na calha à esquerda do código. Você está recebendo este erro porque o -> Bool na declaração do método especifica que este método deve retornar um valor booleano. Como ainda não está, você verá o erro do compilador. Quando terminarmos de adicionar o código, este método retornará verdadeiro se o botão Compartilhar deve ser ativado e falso se não deveria.
![]() |
Figura 14 - Adicione o novo isReadyToShare método. |
- Agora, em vez de fazer um cópia de e colar, vamos cortar e cole o código do textViewDidChange: método para o novo isReadyToShare método. Para fazer isso, selecione todo o código no textViewDidChange: método como mostrado em Figura 15 clicando e arrastando da primeira linha de código para a última linha de código no método.
![]() |
Figura 15 - Selecione todo o código no appNameAlterado: método. |
- A seguir, digite Comando+X para cortar o código deste método.
- Agora clique dentro das chaves do isReadyToShare método e pressione Comando+V para colar o código no método. Quando você terminar, esses três métodos devem se parecer com Figura 16.
![]() |
Figura 16 - O código foi recortado appNameAlterado: e colado em isReadyToShare . |
- Agora precisamos alterar o código neste método para retornar falso se o botão Compartilhar não deve ser ativado e verdadeiro se deveria. Para fazer isso, substitua o código entre chaves no se mais declaração como mostrado em Figura 17. Observe que também adicionei comentários que explicam como esse método funciona.
![]() |
Figura 17 - isReadyToShare retorna NÃO para desativar o botão Compartilhar e SIM para habilitá-lo. |
- Agora adicione o código mostrado em Figura 18 para o appNameAlterado: e textViewDidChange: métodos. Este código chama o isReadyToShare método no controlador de exibição e armazena o valor retornado no ativado propriedade do botão Compartilhar.
![]() |
Figura 18 - Passe um isReadyToShare mensagem de ambos os métodos. |
- Há mais um passo que precisamos dar para que isso funcione corretamente. Precisamos armazenar uma referência ao WriteReviewController no delegar propriedade da visualização de texto.
Para fazer isso, vá para o Project Navigator e selecione o Principal.Storyboard arquivo e, em seguida, vá para o Inspetor de Conexão (o botão na extrema direita na barra de ferramentas Inspetores). Clique na visualização de texto na superfície de design para selecioná-la. Em seguida, clique na conexão bem à direita do delegar saída e arraste até o Write Review View Controller ícone no dock acima do Escrever análise cena como mostrado em Figura 19 . Ao soltar o mouse, o delegar tomada e controlador de exibição serão conectados.
![]() |
Figura 19 - Conecte as visualizações de texto delegar propriedade para o WriteReviewViewController . |
Chutando os pneus!
Agora você está pronto para chutar os pneus e ver como as mudanças que você fez funcionam.
- Clique no Corre botão no Xcode e quando o aplicativo aparecer no Simulador, selecione o Escreva uma crítica opção.
- Digite o texto no Nome do aplicativo campo de texto primeiro e, em seguida, digite na exibição de texto depois. Observe que assim que você digitar o primeiro caractere na visualização de texto, o botão Compartilhar será ativado!
- Tente excluir todos os caracteres em um dos controles e depois no outro para ver o botão Compartilhar ser ativado e desativado.
Cultivando a pérola
Se você estiver criando este aplicativo para um cliente, poderá mostrá-lo a ele para obter algum feedback após adicionar essa nova funcionalidade. Neste ponto, e se o patrocinador lhe disser que uma classificação de zero estrelas não é aceitável (assim como na App Store)? Agora você precisa alterar o aplicativo para garantir que o botão Compartilhar não seja ativado até que uma classificação seja selecionada.
Gostaria que você pensasse no que teria que fazer se tivesse simplesmente copiado o código que verificava um campo de texto vazio e a visualização de texto do appNameAlterado: método e colei no textViewDidChange: método. Agora você teria dois locais onde teria que adicionar um código que verifica se o usuário selecionou uma classificação para o aplicativo! Isto é não o tipo de aplicativo que você deseja criar. É muito melhor fazer o que fizemos neste post e criar um método separado que pode ser chamado a partir do appNameAlterado: e textViewDidChange: métodos, porque há apenas um lugar onde temos que alterar o código.
Conclusão
Criar aplicativos de alta qualidade é uma ciência e uma arte. O esforço que você coloca na criação de um aplicativo bem projetado lhe renderá dividendos muitas vezes durante a vida do seu aplicativo. Eu recomendo que você leia livros como Código concluído para aprender ainda mais ótimas práticas de codificação e aprimorar suas habilidades de desenvolvimento de aplicativos!
<