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 9 da série. Se você está apenas começando agora, confira o início da série aqui (este post foi atualizado para Swift 1.2 iOS 8 e Xcode 6.3.)
No meu postagem anterior , eu ensinei como escrever sua primeira linha de código. No processo, abordei o conceito de chamar métodos em Swift. Neste post, vamos dar uma olhada no importante conceito de chamar métodos, e também vamos trabalhar na conversão do protótipo Revisão do iApps em um aplicativo totalmente funcional.
Revisando a terminologia
Quando você é um novato na programação, a terminologia pode ser um pouco esmagadora. Para ajudá-lo, vamos revisar alguns dos termos importantes que você aprendeu nas últimas postagens. Ao revisar cada termo, use figura 1 como ponto de referência visual.
- Estrutura - Um conjunto de ferramentas que você pode acessar de dentro do seu aplicativo. Para o desenvolvimento de aplicativos iOS, a Apple fornece o Cocoa Touch, que é um conjunto de estruturas (algumas das quais são mostradas no lado esquerdo da figura 1 ) que fornecem funcionalidades e serviços para seu aplicativo. o Estrutura de fundação mostrado no centro de figura 1 contém a funcionalidade principal exigida por todos os aplicativos iOS.
- Classe - Uma classe é como um projeto que define os atributos e o comportamento dos objetos. Por exemplo, o UITextField classe mostrada no lado direito de figura 1 faz parte do Estrutura de fundação e é o modelo para todos os objetos de campo de texto em seu aplicativo.
- Propriedade - Define uma característica de uma classe. As classes geralmente têm várias propriedades. Por exemplo, o UITextField classe tem propriedades como fundo , Fonte , e texto .
- Método - Define o comportamento de uma classe. Um método agrupa uma ou mais linhas de código que são executadas como uma unidade. As classes geralmente têm vários métodos. Por exemplo, o UITextField classe tem métodos como clearButtonRectForbounds: , drawTextInRect: , e editandoRectForBounds: .
- Objeto - Uma classe que 'ganhou vida'. Você pode criar vários objetos de uma única classe. Por exemplo, o canto inferior direito de figura 1 mostra três objetos de campo de texto criados a partir do UITextField classe.
![]() |
Figura 1 - Uma visão geral de frameworks, classes, propriedades, métodos e objetos |
Como retratado em Figura 2 , você chama o stringByAppendingString: método no minhaString objeto e retorna uma string anexada.
![]() |
Figura 2 - Chamando o stringByAppendingString: método em um objeto string |
A anatomia de uma chamada de método
Figura 3 ilustra a anatomia de uma chamada de método.
![]() |
Figura 3 - A anatomia de uma chamada de método |
As principais coisas a serem observadas:
- Uma chamada de método começa especificando o nome da variável que contém uma referência ao objeto no qual você está chamando o método.
- Um ponto ou ponto (.) segue o nome da variável, razão pela qual isso é frequentemente chamado de 'sintaxe de ponto'.
- Após o ponto está o nome do método que você deseja chamar no objeto.
- O nome do método é seguido por um parêntese aberto e fechado.
- Entre parênteses, você inclui quaisquer dados ou argumentos você está passando para o método.
Descobrindo como chamar um método
Ao escrever o código para seu aplicativo, você chamará muitos métodos em muitos objetos do framework Cocoa Touch. Você usará uma ampla variedade de classes e objetos e precisará deles para executar tarefas específicas para você. Talvez você precise enviar uma mensagem de texto, encontrar a localização atual do usuário ou obter a pontuação mais alta do usuário atual em um jogo. Uma coisa é descobrir que classe e método para chamar; é outro obstáculo para descobrir Como as para chamar esse método.
Primeiro, você precisa saber que o Swift tem dois tipos principais de métodos— métodos de instância e métodos de tipo . Os métodos de instância são chamados em instâncias de um objeto, o que significa que você cria um objeto de uma classe e, em seguida, chama um método no objeto. Em contraste, os métodos de tipo pertencem à classe ou ao próprio tipo, o que significa que você chama o método na classe diretamente, sem criar uma instância da classe.
Chamando métodos de instância
Aqui estão as principais etapas para chamar um método de instância em um objeto :
- Crie o objeto no qual você está chamando o método.
- Se houver um valor de retorno:
- Crie uma variável para armazenar o valor de retorno (você pode nomeá-la como quiser).
- Digite '=' para armazenar o valor de retorno na variável.
- Digite o nome da variável que contém uma referência ao objeto no qual você está chamando o método.
- Digite um ponto e, em seguida, o nome do método a ser chamado.
- Digite um parêntese esquerdo '('.
- Se houver argumentos
- Digite o primeiro valor do argumento.
- Se houver um segundo argumento, pressione aba para aceitar o nome do parâmetro e os dois pontos, digite o valor do argumento.
- Faça o mesmo para quaisquer argumentos adicionais.
- Digite um parêntese direito ')' para completar a declaração.
Você pode consultar essas etapas sempre que precisar chamar um método em um objeto.
Etapas para chamar um método de classe
Aqui estão os principais passos para chamar um método em um classe :
- Se houver um valor de retorno:
- Crie uma variável para armazenar o valor de retorno (você pode nomeá-la como quiser).
- Digite '=' para armazenar o valor de retorno na variável.
- Digite o nome da classe na qual você está chamando o método.
- Digite um ponto e depois o nome do método a ser chamado.
- Digite um parêntese esquerdo '('.
- Se houver argumentos:
- Digite o primeiro valor do argumento.
- Se houver um segundo argumento, pressione tab para aceitar o nome e os dois pontos do parâmetro e digite o valor do argumento.
- Faça o mesmo para quaisquer argumentos adicionais.
- Digite um parêntese direito ')' para completar a declaração.
Essas etapas são muito semelhantes, exceto que você não precisa criar um objeto de uma classe e chama o método da própria classe, em vez de um objeto.
Interpretando a documentação da Apple
A Apple fornece documentação para todas as classes da estrutura Cocoa Touch. Vou ensiná-lo a interpretar esta documentação para que você saiba como chamar métodos em objetos e classes.
A Figura 4 mostra a documentação da Apple para o NSString classe stringByAppendingPathExtension: método.
![]() |
Figura 4 - stringByAppendingPathExtension : documentação |
No topo de Figura 4 , a descrição diz 'Retorna uma nova string feita anexando ao receptor um separador de extensão seguido por uma extensão.' Isso significa que quando você chama o stringByAppendingPathExtension : em um objeto string (o receptor) o objeto string anexa a extensão que você passou como um argumento para seu próprio valor de string interno e retorna a string resultante para você.
Diretamente abaixo desta descrição, a documentação descreve o stringByAppendingString: método. Isso é conhecido como o assinatura do método :
func stringByAppendingPathExtension(_ ext: String) -> String
Aqui estão as principais coisas a serem observadas:
- A palavra-chave função quando não precedido pelo classe palavra-chave indica que este é um instância método.
- stringByAppendingPathExtension: é o nome do método
- O método aceita um único parâmetro cujo tipo é Corda
- O valor após o símbolo -> indica o tipo do valor de retorno. Neste caso, indica que este método retorna um valor do tipo Corda .
Você costuma ver os termos argumento e parâmetro usados alternadamente. Um argumento é um dado que você passa para um método. Um parâmetro é uma parte da declaração do método que determina os argumentos a serem passados para o método. Resumindo, os argumentos aparecem nas chamadas dos métodos, os parâmetros aparecem nas declarações dos métodos.
Agora vamos dar uma olhada na documentação da Apple para um modelo método. Figura 5 mostra a documentação do cor vermelha: método de classe do UIColor classe.
![]() |
Figura 5 - cor vermelha : documentação |
Conforme mencionado na descrição, este método retorna um objeto de cor com valores RGB para a cor vermelha. Aqui estão as principais coisas a serem observadas:
- o classe palavra-chave é usada em Swift para indicar que um método é uma classe ou modelo método.
- cor vermelha: é o nome do método.
- O método não aceita parâmetros.
- O valor após o símbolo -> indica o tipo do valor de retorno. Neste caso, indica que este método retorna um valor do tipo UIColor .
À medida que continuamos nesta série de blogs, você verá muitas assinaturas de métodos diferentes, mas as informações nesta postagem devem ajudá-lo a decifrar uma ampla variedade de métodos de instância e tipo.
Vamos chamar alguns métodos - Escondendo o teclado do iOS!
Agora que expus os métodos básicos de chamada em Swift, vamos voltar para Revisão do iApps e adicione algumas funcionalidades ao aplicativo adicionando chamadas de método.
Observação: Para seguir as instruções deste post, você devo primeiro baixe a versão mais recente do Revisão do iApps a partir de esse link . Se você tiver problemas ao seguir as etapas desta postagem, poderá obter a versão completa (até agora) do Revisão do iApps a partir de esse link .
Nosso primeiro trabalho é consertar o Escrever análise cena para que o teclado fique oculto quando o usuário tocar no plano de fundo ou na tecla Enter (somente no campo de texto). Lembre-se, ao adicionar código personalizado para uma cena, existem três etapas principais no processo:
- Adicione uma nova classe de controlador de exibição ao projeto.
- Associe a nova classe do controlador de visualização à cena do storyboard.
- Adicione o código personalizado à nova classe do controlador de exibição.
Vamos realizar cada uma dessas etapas nas próximas seções.
Adicionando uma nova classe View-Controller ao projeto
Nas etapas a seguir, adicionaremos uma nova classe chamada WriteReviewViewController baseado em UIViewController ao projeto.
- Abra o Revisão do iApps projeto em Xcode.
- No Project Navigator no lado esquerdo da janela do Xcode, clique no ícone FeedbackViewController.swift Arquivo. Isso faz com que os novos arquivos de classe que você criará nas próximas etapas sejam listados no Project Navigator diretamente abaixo desse arquivo.
- Selecionar Arquivo > Novo > Arquivo... no menu Xcode. Isso exibe a caixa de diálogo Novo arquivo ( Figura 6 ).
![]() |
Figura 6 - Selecione Fonte e Classe de toque de cacau na caixa de diálogo Novo arquivo. |
- No lado esquerdo da caixa de diálogo, sob o iOS seção, selecione Fonte . No painel à direita, selecione Cocoa Touch C moça e depois clique Próximo . Isso exibe a segunda etapa da caixa de diálogo Novo arquivo ( Figura 7 ).
![]() |
Figura 7 - Criar um WriteReviewViewController classe baseada em UIViewController . |
- No Subclasse de caixa, digite UIViewController (se ainda não estiver selecionado) e então, no Classe campo de texto, adicione o prefixo Escrever análise para nomear a classe WriteReviewViewController . Certifique-se de Linguagem está configurado para Rápido .
- Clique no Próximo botão para exibir a caixa de diálogo Salvar arquivo.
- Clique no Crio botão para criar a nova classe do controlador de visualização e salvá-la na pasta raiz do projeto. Após alguns segundos, você verá o novo arquivo no Project Navigator ( Figura 8).
![]() |
Figura 8 - Os novos arquivos do controlador de visualização no Project Navigator |
- Há uma outra mudança importante que você precisa fazer. Apesar de termos feito deste novo controlador de visão uma subclasse de UIViewController , afinal, porque o Escrever análise cena contém uma visão de tabela, precisamos torná-la uma subclasse de Controlador UITableView em vez disso (mesmo que a exibição de tabela contenha uma única célula estática). Eu não fiz você escolher Controlador UITableView como a subclasse na caixa de diálogo Novo arquivo, porque quando você faz isso, o Xcode adiciona muito código ao controlador de exibição que não é necessário para uma exibição de tabela estática.
Então, para alterar a superclasse do novo controlador de visão, vá para o Project Navigator e selecione o WriteReviewViewController.swift arquivo e altere a superclasse para Controlador UITableView como mostrado em Figura 9 .
![]() |
Figura 9 - Altere a superclasse para Controlador UITableView . |
É isso! Agora você está pronto para associar o controlador de exibição ao Escrever análise cena.
Associando o WriteReviewViewController com a cena Write Review
Agora que você criou o novo WriteReviewViewController classe, é hora de associá-lo ao Escrever análise cena.
- No Project Navigator, selecione o storyboard principal Arquivo.
- Clique na doca de cena na parte superior do Escrever análise scene para selecionar o controlador de visualização da cena.
- Vá para o Identity Inspector do Xcode clicando no terceiro botão da esquerda na barra de ferramentas do Inspector, conforme mostrado em Figura 10 . No Classe caixa de combinação, digite WriteReviewViewController . Se depois de digitar os primeiros caracteres, o Xcode não preencher automaticamente a caixa de combinação com o nome da classe, saia do Xcode, reinicie o Xcode e tente novamente.
![]() |
Figura 10 - Defina a classe do controlador de visualização para WriteReviewViewController . |
Adicionando código personalizado ao controlador de exibição
Adicionar código personalizado ao novo controlador de exibição geralmente é a terceira etapa das três etapas principais para adicionar código personalizado a uma cena. Na minha postagem anterior, o Xcode gerou um novo método de ação para nós quando arrastamos de uma conexão bem no Inspetor de conexões para o arquivo de cabeçalho do controlador de exibição.
No entanto, ao adicionar código a um controlador de exibição que você acha que pode precisar em outros aplicativos (ou mesmo em outros controladores de exibição no mesmo aplicativo), considere colocá-lo em um local onde possa ser acessado por vários controladores de exibição . Este é definitivamente o caso da funcionalidade que estamos procurando adicionar ao Escrever análise cena. Qualquer cena que contenha um campo de texto ou uma visualização de texto precisará da funcionalidade para ocultar automaticamente o teclado. É aqui que o mmUIViewControlleExtensions.swift arquivo chega. Se você der uma olhada Figura 8 , você pode ver que adicionei este arquivo de código ao projeto.
Esta classe contém código que considero útil nos aplicativos que crio (sinta-se à vontade para usá-los em seus próprios projetos). Selecione os mmUIViewControllerExtensions.swift arquivo no Project Navigator e você verá o fundoTocado: e textFieldReturn: métodos mostrados em Figura 11 .
![]() |
Figura 11 - fundoTocado: e textFieldReturn: métodos de mmUIViewControllerExtensions |
Este é um tipo especial de classe Swift conhecido como extensão . Extension são uma ferramenta poderosa que permite adicionar métodos a uma classe existente. Neste caso, o Cocoa Touch UIViewController class não faz tudo o que precisamos (como ocultar o teclado quando o usuário toca em retornar no teclado ou toca o plano de fundo). Abordaremos as extensões com mais detalhes em uma postagem posterior, mas, por enquanto, saiba apenas que as extensões permitem adicionar a funcionalidade necessária ao UIViewController classe.
Observe os comentários que descrevem como cada método na extensão é usado. Esses são os tipos de comentários que você deseja escrever para seus próprios métodos personalizados. Eles descrevem exatamente como o método pode ser usado. Observe também que esses métodos são sinalizados como métodos de ação ( IBAação ). Isso significa que você pode conectar facilmente esses métodos aos eventos de controle da interface do usuário.
Então, o que temos que fazer para usar esses métodos no WriteReviewViewController classe? Em virtude do fato de que o mmUIViewControllerExtensions estiver incluído no projeto, todos os controladores de visualização no projeto 'herdarão' automaticamente esses métodos de extensão.
Antes de conectarmos esses métodos de ação aos controles da interface do usuário, vamos dar uma olhada no código real que foi herdado. Como mostrado em Figura 11 , a textFieldReturn: método contém uma única linha de código, que faz uma chamada de método! Confira este código por um minuto e veja se você consegue descobrir o que ele faz.
Como você fez? Acho que um diagrama pode realmente ajudar a visualizar o que está acontecendo, então adicionei um Figura 12 . No mundo da programação orientada a objetos, esse tipo de diagrama é conhecido como diagrama de sequência porque mostra a sequência de chamadas de método (modifiquei um pouco a sintaxe do diagrama de sequência formal para facilitar a leitura).
![]() |
Figura 12 - A textFieldReturn: diagrama de sequência |
Como mostrado em Figura 12 , quando o usuário pressiona a tecla Enter no teclado, o textFieldReturn: método de ação é executado automaticamente. O objeto de campo de texto que atualmente tem foco é passado para este método no remetente parâmetro. Então o resignFirstResponder é chamado no objeto de campo de texto. Isso faz com que o campo de texto perca o foco e o teclado fique automaticamente oculto.
Diretamente acima do textFieldReturn: método é o fundoTocado: método mostrado em Figura 11 . Novamente, esta é uma única linha de código que faz uma chamada de método. Reserve um momento para descobrir o que esse método faz.
Observe que, em vez de chamar um método no remetente objeto, este código chama um método em auto . Lembrar, auto refere-se à classe que contém o código, que neste caso, é o WriteReviewViewController classe. Cada controlador de visualização tem um Visão propriedade que faz referência à exibição que está associada ao controlador de exibição. Então, esse código chama o finalEdição: método o WriteReviewViewController vista de.
Como mostrado em Figura 13 , quando o usuário toca no plano de fundo da visualização, o fundoTocado: método de ação é executado automaticamente. A partir desse método, o finalEdição: é chamado na exibição, o que faz com que o teclado seja dispensado.
![]() |
Figura 13 - A fundoTocado: diagrama de sequência |
É isso! Seu controlador de exibição possui os métodos de ação necessários.
Conectando controles de interface de usuário a métodos de ação
Agora você está pronto para conectar os controles da interface do usuário aos métodos de ação do controlador de exibição.
- No Project Navigator, selecione o storyboard principal Arquivo.
- No Escrever análise cena, clique no Nome do aplicativo campo de texto para selecioná-lo.
- Com o campo de texto selecionado, vá para o Inspetor de Conexões clicando no botão na extrema direita na barra de ferramentas do Inspetor ( Figura 14 ).
- Em seguida, clique na conexão bem à direita do Terminou na saída evento e arraste para o ícone do controlador de exibição localizado no dock de cena na parte superior do Escrever análise cena (o Terminou na saída evento é acionado quando o usuário toca no Retorna tecla no teclado.)
![]() |
Figura 14 - Crie uma conexão a partir do Terminou na saída evento. |
- Solte o botão do mouse para exibir o menu pop-up de conexão. Selecione os textFieldReturn: método de ação no menu pop-up ( Figura 15 ).
![]() |
Figura 15 - Selecione textFieldReturn: a partir do menu pop-up. |
- Agora você está pronto para se conectar ao fundoTocado: método de ação. As exibições do iOS não têm um evento que é acionado automaticamente quando o usuário toca o plano de fundo de uma exibição. Então, para capturar essa ação do usuário, você precisa adicionar um reconhecedor de gestos para a cena. As classes de reconhecimento de gestos do iOS facilitam a captura e a resposta a uma variedade de gestos de seus usuários. o Toque em Reconhecedor de gestos reconhece toques simples ou duplos, bem como toques com vários toques.
Arraste um Toque em Reconhecedor de gestos da Biblioteca de Objetos e solte-o no fundo da Escrever análise cena como mostrado em Figura 16.
![]() |
Figura 16 - Adicionar um Toque em Reconhecedor de gestos para o Escrever análise cena. |
- Isso exibe um Toque em Reconhecedor de gestos ícone na doca de cena. Clique neste ícone ( Figura 17 ) e, em seguida, vá para o Inspetor de Atributos (o terceiro botão à direita na barra de ferramentas do Inspetor) e desmarque a opção Cancela os toques à vista opção. Isso permite que outros controles na visualização recebam toques.
![]() |
Figura 17 - Desmarque a Cancela os toques à vista opção. |
- Com o reconhecedor de gestos ainda selecionado, vá para o Inspetor de conexões (o botão na extrema direita da barra de ferramentas do Inspetor). Debaixo de Ações enviadas seção, clique na conexão bem à direita da seletor ação e desta vez arraste para o ícone do controlador de exibição localizado no lado esquerdo do dock de cena, como mostrado na Figura 18.
![]() |
Figura 18 - Crie uma conexão a partir do reconhecedor de gestos seletor . |
- Solte o botão do mouse para exibir o menu pop-up de conexão. Selecione os fundoTocado: método de ação no menu pop-up ( Figura 19) .
![]() |
Figura 19 - Selecione fundoTocado: |
Agora o Escrever análise cena está pronta para ser testada!
Testando a cena do Write Review
Siga estas etapas para testar a nova funcionalidade 'ocultar o teclado'.
- Clique no Xcode Corre botão.
- Quando o aplicativo aparecer no Simulador, clique no botão Escreva uma crítica célula para exibir o Escrever análise cena.
- Clique no Nome do aplicativo campo de texto e o teclado deve aparecer como mostrado na Figura 20.
![]() |
Figura 20 - O teclado aparece quando você clica no Nome do aplicativo campo de texto. |
- Clique no teclado Retorna botão, e o teclado deve ser dispensado!
- Em seguida, clique na visualização de texto (o grande controle branco da interface do usuário abaixo do campo de texto). Isso exibe novamente o teclado.
- Clicar em retornar neste ponto apenas adiciona uma nova linha vazia na visualização de texto (como deveria). No entanto, se você clicar no plano de fundo da visualização, o teclado deverá ser descartado.
Conclusão
Nós cobrimos muito terreno conceitual neste post. Depois de dominar os métodos de chamada no Swift, é um longo caminho em direção ao seu objetivo de se tornar um desenvolvedor de aplicativos. Como de costume, recomendo que você leia este post novamente até que termos como método de instância, método de tipo, argumento, parâmetro e valor de retorno se tornem mais familiares. Nas minhas próximas postagens, avançaremos o aplicativo mais rapidamente agora que você entende o importante conceito de chamar métodos.