quinta-feira, abril 07, 2011

Desenvolvimento IPhone sem o uso do Interface Builder

Bom, depois de ver mais de dez vezes os vídeos abaixo, resolvi criar um complemento deles. Senti falta de ter o código final ou em partes para poder a companhar o vídeo, então ae vai minha extensão para o aprendizado. Para ficar mais claro o uso desse complemento sugiro ver os vídeos e acompanhar o código aqui postado conforme a evolução.

O primeiro passo a ser seguido é ver o vídeo abaixo e apenas VER, pois no primeiro é criado uma aplicação do tipo View-Based App e no segundo uma Window-Based App.(tive problemas na primeira vez que vi o 2o video e utilizei o mesmo projeto 'o_o). Então fica a dica, presta atenção no vídeo e depois faz utilizando a Window-Based App.



A segunda parte está dividida em 3 seções, que explicam bem o funcionamento do Obj-C e do IPhone.

Abaixo alguns passos mostrados no vídeo.

apagar o arquivo XIB dentro da pasta resources.

apagar a property Main nib file base name do arquivo projeto-info.plist

adicionar o nome da AppDelegate na main.m

int main(int argc, char *argv[])
{    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"NomeDoProjetoAppDelegate");
    [pool release];
    return retVal;
}

no arquivo da AppDelegate.h, apagar a referencia do IB(Interface Builder) IBOutlet

@property (nonatomic, retain) IBOutlet UIWindow *window;

criar uma instancia da window no arquivo AppDelegate.m

window = [[UIWindow alloc] init];

novamente no AppDelegate.h, criar o controle abaixo

UINavigationController *navController;

adicionar um ViewController ao projeto clicando em Classes>Add>New File...

importar a ViewController na AppDelegate.h e criar uma variavel do tipo ViewController, com isso o código deve estar parecido com o abaixo.




#import
#import "NomeDoProjetoViewController.h"

@interface NomeDoProjetoAppDelegate : NSObject {
    UIWindow *window;
    UINavigationController *navController;
    NomeDoProjetoViewController *vcNomeDoProjeto;
}

@property (nonatomic, retain) UIWindow *window;

@end


criar uma instancia do ViewController inicializar o navController passando a view como parametro e por final adicionar o navController na window, isso tudo no arquivo AppDelegate.m

vcNomeDoProjeto = [[NomeDoProjetoViewController alloc] init];
navController = [[UINavigationController alloc] initWithRootViewController: vcNomeDoProjeto];

re-escrever o metodo INIT da ViewController - nessa parte encerra o vídeo, então o código será re-escrito abaixo junto com o vídeo a seguir.


- (id)init {
if (self = [super init]) {
}
return self;
}




criar uma View na pasta Classes - para isso clique na pasta Add>New File...

importar a View na ViewController.m, com isso o código deve estar parecido com isso:
Note que no meu caso criei a View com o nome MainView!

#import "NomeDoProjetoViewController.h"
#import "mainView.h"

@implementation NomeDoProjetoViewController

- (id)init {
if (self = [super init]) {
mainView *v = [[mainView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
self.view = v;
[v release];
}
return self;
}

Nesse ponto termina o processo para desvincular o IB do seu projeto, a partir daqui o vídeo mostra como criar outros componentes e seus funcionamentos. Aconselho ver todos os vídeos para adquirir mais conhecimento da plataforma. Para ver os demais vídeos entre no canal da ToucheMobile no youtube.