Your SlideShare is downloading. ×
  • Like
Introdução a programação para plataforma iOS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Introdução a programação para plataforma iOS

  • 447 views
Published

Veja neste artigo como começar os estudos de programação para plataforma iOS. Aprenda a criar seu primeiro app para iPhones/iPad.

Veja neste artigo como começar os estudos de programação para plataforma iOS. Aprenda a criar seu primeiro app para iPhones/iPad.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
447
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
22
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Todo texto técnico que tem por objetivo introduzir alguém em uma nova linguagem de programação sempreinicia pelo clássico exemplo do Hello World. Esse artigo não vai fugir disso. Porém, este será um Hello Worlddiferente, tratará de um Hello World social, com envio de mensagens e imagens para o Twitter e para oFacebook.O desenvolvimento dos chamados “Apps” para iPhone e iPad é realizado através de um IDE ou ambiente dedesenvolvimento da Apple chamado Xcode. O Xcode é gratuito e pode ser obtido na App Store. Para instalá-lo énecessário um hardware Apple. Para este artigo, foi utilizado o OS X 10.8.2, conhecido como Mountain Lion e oXcode versão 4.5.2.A linguagem utilizada é chamada Objective-C e se você já programou em alguma outra linguagem,principalmente C, C++ ou Java, verá que Objective-C é bem tranquila. É possível aprender todo o básico deObj-C em um ou dois dias dependendo da sua experiência. E logo você perceberá que Obj-C não é o problema.Para desenvolvermos para plataforma iOS, utilizamos um conjunto de bibliotecas chamado Cocoa Touch. Essabiblioteca é enorme e é ai que aparecem as dificuldades da plataforma. Tenha calma e paciência e verá quelogo você estará bem confortável com a linguagem. Vamos ao exemplo prático e trataremos da teoria nospróximos artigos.Uma vez que tiver sido realizado o download e a instalação do Xcode, temos a tela inicial como na Figura 1.Figura 1: Criando novo projeto no XcodeNesta tela é possível abrir os projetos criados recentemente, criar um novo projeto, conectar a um repositórioSVN ou Git, consultar a documentação e acessar o portal de desenvolvedor da Apple.Clique em “Create a new Xcode project“ e será apresentada uma tela como a Figura 2.
  • 2. Figura 2:Escolhendo o template do novo projeto Esta é a tela de escolha de modelos (templates) de projetos para iOS ou OS X. Certifique-se de que no menu da direita esteja selecionado iOS / Application. Dessa forma, todos os modelos disponíveis para projetos de aplicativos iOS serão apresentados no quadro da esquerda. Em um resumo rápido, temos:o Master-Detail Application: aplicação para iPad em que a interface é baseada no layout mestre-detalhe. Existe um menu de opções à direita e conforme a opção selecionada são apresentados diferentes conteúdos no quadro da esquerda.o OpenGL Game: auto explicativo, modelo para criação de jogos utilizando OpenGL.o Page-Based Application: aplicação baseada no modelo de apresentação de livro. Disponibiliza aquele efeito legal de página virando.o Single View Application: aplicação de uma única tela. Poderíamos utilizar este modelo em um Hello World simples ou qualquer outro app que não necessite de mais de uma tela.o Tabbed Application: aplicação baseada no modelo de navegação em abas. Algo como o app Telefone que exibe aquela barra inferior com as abas Favoritos, Recentes, Contatos, Teclado e Voicemail.o Utility Application: muito parecido com o Single View Application, porém com um botão de informação que mostra uma segunda tela para ser usada como um “sobre” (about), ajuda ou contato.o Empty application: aplicação vazia. Geralmente aplicações mais complexas iniciam por este modelo, sendo que este é o único que permite já iniciar usando Core Data, que é o framework de persistência da Apple.
  • 3. Para este artigo, escolha o “Tabbed Application“ e será apresentada a tela da Figura 3.Figura 3: Definindo nome e parâmetros iniciais do projetoAgora é necessário definir o nome do app (Product Name). Para esse exemplo vamos utilizarAXHelloSocialWorld.O nome da sua organização (Organization Name), que também pode ser o seu nome.O identificador da organização (Company Identifier) que é geralmente o endereço eletrônico do domínio da suaempresa, escrito com os componentes invertidos.Por exemplo, a empresa onde trabalho se chama Heurys Tecnologia, e seu domínio é heurys.com.br. Dessaforma, invertendo os componentes o identificador é br.com.heurys. Esse identificador serve para referenciar aempresa que desenvolveu o app e será muito importante em futuros projetos na fase de teste em dispositivosfísicos ou na geração da versão para distribuição. Se você não sabe o que colocar, pode colocar apenas “local”.Identificador do pacote (Bundle Identifier) é gerado automaticamente pela concatenação do identificador daempresa com o nome do app.Prefixo de classe (Class Prefix) é um prefixo que será utilizado automaticamente para nomear todas as classesque forem criadas neste projeto. Serve para evitar que seja criada uma classe com nome genérico, porexemplo, Produto e no futuro esse nome venha a conflitar com o nome de alguma classe de um frameworkutilizado. Para este exercício, pode ser deixado em branco. Mas você pode utilizar uma sigla do seu nome ou dasua empresa, geralmente de três letras.Em dispositivos (devices) é possível selecionar em que dispositivos esse app vai rodar. As possibilidades sãoiPhone, iPad ou Universal. Para este exercício será utilizado iPhone. A única justificativa para isso é facilitar odesenho das telas, já que no iPad a tela é muito maior. Mas todo o código aqui roda normalmente no iPhone eno iPad.
  • 4. Deixar selecionado o uso de Storyboards. Este é um recurso disponível a partir do iOS 5 que permite utilizar umarquivo chamado Storyboard com a representação das telas e o fluxo de uma para outra.Deixar selecionado o uso do ARC (Automatic Reference Counting). Esse recurso é responsável pela alocação eliberação de memória de forma automática.Definidas todas essas opções, clique em Next e será apresentada a tela principal do Xcode com alguns arquivosgerados automaticamente.Nesse momento, antes de alterar qualquer coisa é interessante testar o modelo escolhido. Qual a cara de umaaplicação Tabbed Bar padrão? Rode a aplicação dessa forma para ver que cara ela tem. Para isso, clique nobotão Run, o ícone de play localizado no canto superior direito do Xcode.Se tudo correu bem, neste momento sua tela é parecida com a Figura 4.Figura 4: Executando o app pela primeira vezO app está rodando no simulador do iPhone. É exibida uma aplicação com uma tabbar e dois itens (first esecond). Ao alternar entre os itens é notada a alteração do conteúdo.Analisando os arquivos criados automaticamente, temos a Figura 5.
  • 5. Figura 5: Lista de arquivos do projetoAppDelegate: esta é a classe onde tudo começa no iOS. Como toda classe em Obj-C, temos o “.h” e o “.m”. O“.h“ se refere ao header ou cabeçalho da classe. É sua declaração pública, onde são exibidas as variáveis deinstância públicas, métodos e protocolos da classe que podem ser acessados pelas outras classes.Listagem 1: Fonte do AppDelegate.h12 //3 // AppDelegate.h // AXHelloSocialWorld4 //5 // Created by Alexandre Garrefa on 22/01/13.6 // Copyright (c) 2013 Heurys Tecnologia. All rights reserved.7 //89 #import <UIKit/UIKit.h>10@interface AppDelegate : UIResponder <UIApplicationDelegate>1112@property (strong, nonatomic) UIWindow *window;1314@end15Os trechos de código que iniciam com // são comentários. O compilador vai tratar tudo que estiver após //como comentários, limitando até o fim da linha.Também é possível fazer comentários em bloco com o tradicional /* e */.Para evitar complicações a iniciantes nesse momento, vamos ficar com a ideia básica desse header, sem entrarmuito em detalhes.UIKit é o framework do Cocoa Touch responsável pela interface com o usuário. Botões, janelas, labels, etc. EUIKit.h é o header principal do framework.
  • 6. Vamos ignorar todo o resto neste momento. Apenas é interessante dar uma olhada no fonte pra ir seacostumando a sintaxe da linguagem.O AppDelegate.m é a implementação da classe. Imagine que o .h só diz ao utilizador o que a classe prometefazer, mas não conta como. E o .m é onde a mágica acontece. Vamos ver o código, sem assustar nessemomento, pois a ideia é simples.Listagem 2: Fonte do AppDelegate.m1 //2 // AppDelegate.m3 // AXHelloSocialWorld4 //5 // Created by Alexandre Garrefa on 22/01/13. // Copyright (c) 2013 Heurys Tecnologia. All rights reserved.6 //78 #import "AppDelegate.h"910@implementation AppDelegate1112- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDi13{ // Override point for customization after application launch.14 return YES;15}1617- (void)applicationWillResignActive:(UIApplication *)application18{19SMS // Sent whenwhen application is about to move from active to inactive state. Thi the message) or the user quits the application and it begins the transition to20 // Use this method to pause ongoing tasks, disable timers, and throttle down Ope21}2223- (void)applicationDidEnterBackground:(UIApplication *)application24{ // Use this method to release shared resources, save user data, invalidate timer25state in case it is terminated later.26 // If your application supports background execution, this method is called inst27}2829- (void)applicationWillEnterForeground:(UIApplication *)application30{ // Called as part of the transition from the background to the inactive state; h31}3233- (void)applicationDidBecomeActive:(UIApplication *)application34{35 // Restart any tasks that were paused (or not yet started) while the application user interface.36}3738- (void)applicationWillTerminate:(UIApplication *)application39{40 // Called when the application is about to terminate. Save data if appropriate. }4142 @end43
  • 7. 44 45 46 Aqui temos a declaração dos métodos que compõem a classe. A classe AppDelegate é a responsável por ser a primeira na cadeia de resposta de eventos da aplicação. Por isso seu .m é extenso e cheio de métodos de resposta de eventos digamos, de mais baixo nível da aplicação. O principal deles é o trecho abaixo: Listagem 3: aplication: didFinishLauchingWithOptions: 1- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic 2{ 3 // Override point for customization after application launch. 4 return YES; } 5 Uma característica de Obj-C que causa muita estranheza em programadores de outras linguagens é o nome de seus métodos. Obj-C utiliza nomes compostos no método, e procura nomeá-los de forma que sua função fique muito clara. No caso do método acima, seu nome é lido da seguinte forma: application: didFinishLaunchingWithOptions: ou seja, aplicação: terminouDeIniciarComAsOpcoes: . (UIApplication *)application é o parâmetro recebido que informa qual a aplicação que terminou de inicializar. Sendo que o nome da variável é application e seu tipo é UIApplication. O * indica que application é um ponteiro para uma estrutura. Mas não se preocupe com isso agora. A aplicação terminou de subir com opções, e (NSDictionary *)launchOptions é o dicionário de opções. Dentro deste método são executadas as próximas tarefas da aplicação. É aqui, por exemplo, que podemos chamar uma das nossas “telas”. Hum... Espere. Se aqui é onde se deve chamar as próximas telas, por que é que o método está vazio, com exceção do return YES? Isso acontece por que nesse caso está sendo utilizado o Storyboard e é ele quem está definindo quais as próximas classes que devem ser instanciadas. Os outros métodos do AppDelegate.m são:o applicationDidEnterBackground: sinaliza que a aplicação foi colocada em background, provavelmente o usuário alternou para outro app ou foi atender uma ligação. Podem ser realizados procedimentos nesse momento, por exemplo para salvar o estado da aplicação.o applicationWillEnterForeground: sinaliza que o usuário retornou a este app. Podem ser executadas tarefas para recarregar o último estado salvo da aplicação.o applicationDidBecomeActive: sinaliza que o app já está novamente ativo, podem ser retomadas tarefas paralisadas.o applicationWillTerminate: o app vai ser finalizado. Salvar todos os dados que não devem ser perdidos. Voltando a análise dos arquivos: MainStoryBoard.storyboard: arquivo que conta a história visual da aplicação. Quais view controllers serão chamadas e em que ordem. Como se da a transição entre elas, etc. Observar a Figura:
  • 8. Figura 6: Entendendo a storyboard Antes de falarmos do Storyboard, é bom deixar claro que o Cocoa trabalha com o padrão de desenvolvimento MVC, ou Model-View-Controller. De forma bem resumida, o objetivo desse método é separar as classes em:o Modelo (Model): representação dos dados da aplicação e todo o seu tratamento.o Apresentação (View): forma como os dados serão apresentados. O desenho da tela, por exemplo.o Controlador (Controller): objeto que interage com o modelo de forma a possibilitar sua apresentação. Por enquanto, é interessante saber que o Storyboard é o arquivo que trata da camada de apresentação do modelo MVC. Quando se utiliza o modelo de “Tabbed Bar App”, é criado o storyboard acima. Pode-se reparar que ele é constituído por um Tabbar Controller com dois ViewControllers. Para realizar os próximos passos do artigo, é necessário exibir o painel de utilitários (utilities panel). Para isso, verifique a indicação visual 1 e 2 da figura 7 abaixo.
  • 9. Figura 7: Configurando o layout para trabalho com storyboardNa figura 7, acima, temos o “Document Outline“ ou uma listagem dos documentos que compõem as views,aparecendo do lado esquerdo e o “Utilities Panel“, painel de utilitários aparecendo à direita, com as viewsexibidas ao centro.Repare que foram colocadas setas (A, B, C) para indicar o funcionamento do que está sendo exibido. A seta Aindica o que está selecionado no “Document Outline“. No caso, é o First View Controller. Esse objeto estáatrelado a algum arquivo .h e .m. Falando novamente de MVC, o que é visto na tela, selecionado em azul é acamada de apresentação (View) do objeto First View Controller, e existe em algum lugar a camada de controle(Controller) deste objeto. No caso, o controller é o que neste momento se procura saber o nome, para poderrealizar modificações. Selecionando então o First View Controller conforme a indicação da seta A, se obtém onome da classe deste objeto no campo Class do painel de utilitários, indicado pela seta C.Coincidentemente o nome da classe é FirstViewController. E desta forma é possível saber que o arquivo destaclasse que representa o controller se chama FirstViewController.h e FirstViewController.m.Se for selecionado o objeto Second View Controller, clicando na indicação da seta B, será verificado que em C,o nome da classe será Second View Controller, o que nos indica a existência de um arquivoSecondViewController.h e SecondViewController.m.É preciso editar estes arquivos para adicionar funcionalidades a este app. Desta forma, seguindo os passos 1 e2 da figura 8, estaremos com o layout mais apropriado para editar o conteúdo de classes.
  • 10. Figura 8: Configurando o layout para trabalho com classesListagem 3: FirstViewController.h1#import <UIKit/UIKit.h>23@interface FirstViewController : UIViewController45@endCódigo básico, apenas a declaração da interface da classe. É possível declarar variáveis e métodos públicosneste arquivo, mas não será feito isso neste artigo.Listagem 4: FirstViewController.m1 #import "FirstViewController.h"2 @interface FirstViewController ()34 @end56 @implementation FirstViewController78 - (void)viewDidLoad9 {10 [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.11}1213- (void)didReceiveMemoryWarning
  • 11. 14{15 [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.16}1718@end192021O arquivo FirstViewController.m é a implementação da classe, para efeito de didática, este artigo vai trabalharcom um modelo muito mais simples. Selecione e apague todo o código acima e cole o código abaixo:Listagem 5: FirstViewController.m Simplificado1 #import "FirstViewController.h"23 @implementation FirstViewController45 - (void)viewDidLoad6 {7 [super viewDidLoad];89 NSLog(@"FirstViewController iniciado..."); }1011@end12Também será editado o arquivo SecondViewController.m, que deve ficar como o código da listagem 6 abaixo.Listagem 6: SecondViewController.m Simplificado1 #import "SecondViewController.h"23 @implementation SecondViewController45 - (void)viewDidLoad6 {7 [super viewDidLoad];89 NSLog(@"SecondViewController iniciado..."); }1011@end12O código acima é responsável pelo comportamento das duas views que vimos no storyboard da figura 6.Execute novamente o app para ver que agora, quando é exibido o First View Controller, o console do Xcodeapresenta a mensagem: FirstViewController iniciado... e quando se alterna para o Second View Controller, éapresentada a mensagem SecondViewController iniciado... .Isso acontece por que foi adicionado o NSLog com essas strings ao método viewDidLoad das classes. O métodoviewDidLoad é chamado sempre que a tela é carregada e está a ponto de ser exibida. É um métodointeressante para se fazer algumas inicializações da classe. Utilizamos NSLog, que é um método do Foundation(base do Cocoa e Cocoa Touch) e que tem por objetivo registrar uma mensagem, geralmente de erro aosistema de log do device. Também é muito usado para debug.
  • 12. Executando o app novamente, temos como resultado, após alternar entre as views, algo como a figura 9.Figura 9: Executando o app e verificando a saídaSó ai, se tivéssemos utilizado Hello World no lugar de First/SecondViewController iniciado, já poderíamos dizerque um Hello World tinha sido feito, mas como o objetivo deste artigo é publicar um texto e uma imagem noFacebook e no Twitter, ainda existe um pouco de trabalho a fazer. Pouco...O próximo passo para isso é compreender como colocar um botão em uma view e como associá-lo a uma ação.O botão pode ser colocado programaticamente ou em modo gráfico, editando o storyboard. Vamos então voltarao storyboard (verificar novamente a figura 7).
  • 13. Figura 10: Adicionando o botão ao viewPara adicionar o botão à view é necessário arrastar o objeto “Round Rect Button” ou botão retangular comcantos arredondados, do quadro de objetos para a view desejada. Repare na indicação C da figura 10. Pode serque ao arrastar e soltar, o botão não se fixe à view, indicando que o arrastar e soltar não funcionou. Issoacontece quando o zoom da view está negativo. Aumente o zoom clicando no + do quadro indicado como zoomna figura 10 e tente novamente.Uma vez adicionado o botão, vamos trocar seu texto para Twitter. Para isso, clique no botão de forma que elefique selecionado, e no painel utilitários, selecionando a aba inspetor de atributos (indicação A na figura 10),edite o campo Title (título) indicado pela seta B.Tente fazer o mesmo procedimento para o Second View, adicionando um botão e nomeando-o Facebook.Uma vez realizados estes procedimentos, é necessário apenas criar uma ligação do botão que está na view parauma ação no controller.A figura 11 mostra como deixar o layout do IDE preparado para realizar o procedimento.
  • 14. Figura 11: Configurando o layout para realizar ligações entre View e ControllerPara realizar esse procedimento, deixe sua tela da mesma forma que a tela acima, selecionando o botão Twittere a configuração do quadrado A.Dessa forma será exibida a view à esquerda e o controller à direita. Por padrão o Xcode exibe o .h da classeselecionada, mas neste exemplo vamos adicionar a ação diretamente no .m. Faça a troca clicando no quadradoB e selecionando o .m.Uma vez que sua tela estiver no layout correto e exibindo o .m à direita, clique com o botão direito do mouseno botão Twitter e arraste até a área de implementação do .m. Será exibida a mesma linha azul da figura 11.Solte o botão direito e o Xcode apresentará o popover da figura 12.Figura 12: Adicionando ação ao botãoColoque “post” no campo Name, utilize letras minúsculas apenas como nome de métodos. E clique em Connect.Se tudo foi feito corretamente, o resultado é parecido com o que se vê na figura 13.
  • 15. Figura 13: Resultado da adição de ação ao botãoRepare na seta apontando para a bolinha ao lado dos números das linhas. Essa bolinha indica que existe umaligação entre o Controller e a View. Se reparar bem, ela é na verdade um circulo fino externo e uma esferapreenchida interna. O circulo externo é que indica que existe um caminho de comunicação entre o Controller ea View. Se houve a esfera interna, significa que algum elemento da view foi atrelado a este caminho.Por enquanto deixe a ação pronta, o conteúdo será colocado depois. Tente agora selecionar o botão Facebook ecriar a mesma ação post para ele.Tudo feito, deixe sua tela com o layout para edição de classes indicado pela figura 8.Para testar o que foi feito até agora, será adicionado um NSLog a ação post dos botões. Dessa forma serápossível saber se tudo o que foi feito até aqui está correto.Listagem 7: FirstViewController.m1 #import "FirstViewController.h"23 @implementation FirstViewController4 - (void)viewDidLoad5 {6 [super viewDidLoad];78 NSLog(@"FirstViewController iniciado...");9 }1011- (IBAction)post:(id)sender {12 NSLog(@"Twitter post...");13}
  • 16. 1415@end1617Listagem 8: SecondViewController.m12 #import "SecondViewController.h"34 @implementation SecondViewController5 - (void)viewDidLoad6 {7 [super viewDidLoad];89 NSLog(@"SecondViewController iniciado...");10}1112- (IBAction)post:(id)sender {13 NSLog(@"Facebook post...");14}1516@end17Execute novamente o app. Ao abrir a First View, procure clicar algumas vezes no botão Twitter, alterne para aSecond View, clique no botão Facebook e verifique as mensagens de log. O resultado esperado é parecido como exibido na figura 14.
  • 17. Figura 14: Resultado dos logsResta apenas então, adicionar a ação de postar nas redes sociais.O iOS 6 conta com um framework chamado Social. Este framework permite até o momento a integraçãoaplicação com o Twitter, Facebook e SinaWeibo (rede social chinesa).Para adicionar o framework ao projeto, siga os passos 1, 2, 3, 4 e 5 da figura 15.
  • 18. Figura 15: Adicionando Social Framework ao projeto – Passo 1Ao clicar no "+” do passo 5, será exibida uma janela com todos os frameworks disponíveis. Continua na figura16.
  • 19. Figura 16: Adicionando Social Framework ao projeto – Passo 2 Conforme a figura 16, digite social no campo de busca indicado pela seta 1, selecione Social.framework (seta 2) e clique em Add (seta 3). Pronto, botões criados, ação criada e ligada ao botão, Social Framework adicionado ao projeto, só falta agora editar a ação do botão e fazer a mágica acontecer. Para isso, novamente utilize o layout mostrado na figura 8 e edite a classe FirstViewController.m . Para que tudo funcione e seja mais simples entender, a tarefa será dividida em 3 passos.o Incluir o Social Framework ao FirstViewController.m para poder utilizá-lo.o Verificar se o usuário possui conta cadastrada no serviço Twitter.o Apresentar a view para post no Twitter. Para o passo 1, será adicionada uma linha de #import <Social/Social.h> logo abaixo da #import original, ficará assim: Listagem 9: FirstViewController.m - Passo 1 1#import "FirstViewController.h" 2#import <Social/Social.h> 3... 4... 5... Para o passo 2(listagem 9), vamos utilizar a classe SLComposeViewController do Social framework. Essa é a classe do framework responsável por fazer a integração com a rede social por meio de uma tela já ponta de
  • 20. post e que contem alguns métodos utilitários como por exemplo, checar se o usuário tem conta do serviçosolicitado cadastrada no dispositivo.O método que faz essa verificação se chama isAvailableForServiceType. Este método recebe como parâmetrouma NSString indicando o tipo de serviço. No caso deste artigo usaremos como parâmetroSLServiceTypeTwitter e SLServiceTypeFacebook.Será utilizada uma estrutura “if” para verificar a disponibilidade da conta e se estiver disponível seguir ao passo3. Se não houver conta, o próprio SLComposeViewController avisa ao usuário e o redireciona para cadastrar aconta nas configurações.Essa verificação deve ser feita dentro do método post da classe, verifique listagem 9 abaixo.Listagem 10: FirstViewController.m - Passo 21- (IBAction)post:(id)sender2{3 NSLog(@"Twitter post...");45 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])6 {7 }8}9Para finalizar, será instanciado um objeto do tipo SLC e inicializado para o tipo de serviceo Twitter. Serádefinido um texto inicial e após isso sua view sera apresentada na tela.Listagem 11: FirstViewController.m - Passo 312 - (IBAction)post:(id)sender3 { NSLog(@"Twitter post...");45 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])6 {7 SLComposeViewController *composeVC;89 composeVC = [SLComposeViewController composeViewControllerForServiceType:SLS10 [composeVC setInitialText:@"Segui o tutorial do HelloWorld Social do @alexmr111213 [self presentViewController:composeVC animated:YES completion:nil];14 }15}16Se você fez tudo certinho, seu FirstViewController.m agora está como na listagem 12.Listagem 12: FirstViewController.m - Completo1 #import "FirstViewController.h" #import <Social/Social.h>23 @implementation FirstViewController4
  • 21. 5 - (void)viewDidLoad6 { [super viewDidLoad];78 NSLog(@"FirstViewController iniciado...");9 }1011- (IBAction)post:(id)sender12{ NSLog(@"Twitter post...");1314 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])15 {16 SLComposeViewController *composeVC;1718 composeVC = [SLComposeViewController composeViewControllerForServiceType:SLS1920 [composeVC setInitialText:@"Segui o tutorial do HelloWorld Social do @alexmr21 [self presentViewController:composeVC animated:YES completion:nil];22 }23}2425@end26272829Repita estes passos para o SecondViewController.m, trocando os serviços de twitter para facebook. O resultadoserá o da listagem 13.Listagem 13: SecondViewController.m - Completo1 #import "SecondViewController.h" #import <Social/Social.h>23 @implementation SecondViewController45 - (void)viewDidLoad6 {7 [super viewDidLoad];89 NSLog(@"SecondViewController iniciado..."); }1011- (IBAction)post:(id)sender12{13 NSLog(@"Facebook post...");1415 if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {16 SLComposeViewController *composeVC;1718 composeVC = [SLComposeViewController composeViewControllerForServiceType:SLS1920 [composeVC setInitialText:@"Segui o tutorial do HelloWorld Social do @alexmr
  • 22. 2122 [self presentViewController:composeVC animated:YES completion:nil];23 } }2425@end26272829Agora é só executar o app novamente e fazer seus posts no Facebook e Twitter.Leia mais em: Introdução a programação para plataforma iOS http://www.devmedia.com.br/introducao-a-programacao-para-plataforma-ios/27032#ixzz2JHj42dFt