Xcode 4 permite desenvolver aplicativos para o iPhone ou iPad com menor alvo iPhone OS 4.3 de hoje. No entanto, o mesmo código que vem com modelos de "pecado" da arrogância, supondo que a nossa aplicação será alvo iPhone OS 4 ou superior. No pedido de delegado, por exemplo, Xcode insere as seguintes linhas de código:
1 2 3 4 5 6 7
| BOOL ) application : ( UIApplication * ) application didFinishLaunchingWithOptions : ( NSDictionary * ) launchOptions - (BOOL) Aplicação: (*) UiApplication didFinishLaunchingWithOptions aplicação: ( NSDictionary *) launchOptions { / / Substituir ponto para personalização após o lançamento do aplicativo. self.window.rootViewController = self.viewController; ; [Self.window makeKeyAndVisible]; ; retornar SIM; } |
Leia mais ...
O objeto UIWebView componente é muito útil e versátil, ideal para resolver muitos problemas. Não só é perfeito para exibir uma página HTML na net, mas você pode usá-lo para outros fins úteis, tais como:
- Exibir rapidamente documentos PDF
- Ver vídeos ou imagens
- Exibir o conteúdo HTML / CSS local
- Conteúdo falso na fase de protótipo ...
Leia mais ...
1. Cordas em várias linhas
No Xcode, você pode "quebrar" uma string em várias linhas, inserindo no final com uma barra invertida "\". Este recurso pode ser útil quando, por exemplo, queremos inserir o texto HTML em um controle UIWebView :
Leia mais ...
Como mencionado iPhone FirstApp: Adivinhe o número - Parte 1 vemos como fazer um aplicativo para o iPhone da Apple sem usar o Interface Builder! Na verdade, vamos eliminar arquivos físicos criados pela Interface Builder assistente Xcode. No final deste post, então, temos um pedido idêntico em todos os aspectos, àquelas construídas na primeira parte, com a diferença que nós vamos alcançar todos os nossos componentes visuais, incluindo a janela principal, para o código completo.
O aplicativo já feito, se você quiser apenas fazer o download, está disponível no meu repositório do Google Code:
Eu gostaria de apontar imediatamente como o ZIP deste exemplo pesa menos que a última vez! 
Criamos o projeto
Começamos criando o nosso projeto SecondApp (para distingui-lo de FirstApp), embora desta vez escolha Janela aplicativo baseado em:

Agora vamos apagar tudo relacionado com o Interface Builder. : eliminatelo anche dal file system, quindi selezionate Also Move to Trash . Elimine o arquivo MainWindow.xib , localizado na pasta de Resources , remova-o do sistema de arquivos também, e em seguida, selecione também mover para a lixeira. nella casella Main nib file base name : Selecione então o arquivo SecondoApp-info.plist e excluir a referência ao MainWindow arquivo nib no nome da caixa principal com base em:

Neste ponto não temos mais qualquer janela, pelo menos até o Interface Builder. , e modifichiamo la funzione main() in questo modo: Então vamos abrir o arquivo main.m , situado em Other Sources , e modificar a função main() , exemplo:
1 2 3 4 5 6 7 8 9 10 11
| int argc, char * argv [ ] ) { int main (int argc, char * argv []) { pool = [ [ NSAutoreleasePool alloc ] init ] ; NSAutoreleasePool piscina * = [[ NSAutoreleasePool alloc] init]; / / Ao remover o arquivo. XIB perdemos rastreamento / / O delegado app e então passá-lo para "mão" UIApplicationMain ( argc, argv, nil , @ "SecondAppAppDelegate" ) ; int retVal = UIApplicationMain (argc, argv, nil, @ "SecondAppAppDelegate"); ; [Lançamento Piscina]; voltar retVal; } |
Abra SecondAppAppDelegate.me então criar a janela principal via código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void ) applicationDidFinishLaunching : ( UIApplication * ) application { - ApplicationDidFinishLaunching (Void): (UIApplication *) {aplicação
/ / Pega o tamanho da tela (320, 480) UIScreen mainScreen ] applicationFrame ] ; CGRect windowRect = [[mainScreen UIScreen] applicationFrame]; / / Cria uma janela - como fizemos adeus ao Interface Builder [ [ UIWindow alloc ] initWithFrame : windowRect ] ; UIWindow MainWindow * = [[UIWindow alloc] initWithFrame: windowRect]; / / Definir o fundo da Janela para o amarelo, para diferenciar / / O pedido anterior FirstApp [ UIColor yellowColor ] ] ; [MainWindow SetBackgroundColor: [UIColor yellowColor]];
mainWindow ] ; [Self setWindow: MainWindow]; ; [Janela makeKeyAndVisible];
; [MainWindow release]; } |
Você já pode testar o aplicativo, se aparece uma janela amarela que você fez tudo certo!
, necessario solo se si usa Interface Builder. No arquivo SecondAppAppDelegate.h podemos eliminar IBOutlet , só é necessário se você usa o Interface Builder. Também acrescentar aqui que nossas variáveis globais, a última vez que tinha entrado no controlador. Em seguida, modifique o arquivo SecondAppAppDelegate.h :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # Importar <UIKit/UIKit.h> NSObject <UIApplicationDelegate> { @ SecondAppAppDelegate Interface: NSObject {<UIApplicationDelegate> UIWindow janela *; UITextField * número; UIButton * botão; int numeroACaso; } nonatomic, retain ) UIWindow * window; @ Property (nonatomic, reter) UIWindow janela *; void ) controllaNumero; - (Void) getNumber; @ End |
, in quanto non stiamo usando Interface Builder. Também neste caso, nós preparamos a definição do método controllaNumero , como da última vez, mas nós eliminamos a indicação IBAction , uma vez que não estamos usando o Interface Builder.
Nós construímos o código da interface
É hora de criar o código usando todos os componentes de nossa interface. ed inseriamo il seguente codice: Voltamos no arquivo SecondAppAppDelegate.m , posizioniamoci antes [mainWindow release] e insira o seguinte código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| / / Cria a barra de título [ [ UINavigationBar alloc ] initWithFrame : CGRectMake ( 0.0 , 0.0 , 320.0 , 44.0 ) ] ; UINavigationBar myNavigationBar * = [[UINavigationBar alloc] initWithFrame: CGRectMake (0,0, 0,0, 320,0, 44,0)]; myNavigationBar.barStyle = UIBarStyleDefault; [ [ UINavigationItem alloc ] initWithTitle : @ "Indovina un numero" ] ; UINavigationItem navigationItem * = [[UINavigationItem alloc] initWithTitle: @ "Acho que um número"]; navigationItem animated : NO ] ; [MyNavigationBar pushNavigationItem: navigationItem animado: NO]; myNavigationBar ] ; [Janela addSubview: myNavigationBar];
/ / Criar o rótulo [ [ UILabel alloc ] initWithFrame : CGRectMake ( 10 , 50 , 300 , 80 ) ] ; UILabel myLabel * = [[UILabel alloc] initWithFrame: CGRectMake (10, 50, 300, 80)]; UIColor clearColor ] ; myLabel.backgroundColor = [UIColor clearColor]; ; myLabel.numberOfLines = 2; "iPhone ha pensato un numero da 1 a 10, prova ad indovinarlo?" ; myLabel.text = @ "iPhone criou um número de 1 a 10, tentar adivinhar?" myLabel ] ; [Janela addSubview: myLabel];
/ / Criar a entrada de texto UITextField alloc ] initWithFrame : CGRectMake ( 10 , 120 , 300 , 30 ) ] ; = número [[UITextField alloc] initWithFrame: CGRectMake (10, 120, 300, 30)]; numero.borderStyle = UITextBorderStyleRoundedRect; numero.textAlignment = UITextAlignmentCenter; numero.keyboardType = UIKeyboardTypeNumberPad; "Inserisci il numero" ; numero.placeholder = @ "Digite o número"; numero ] ; [Janela addSubview: número];
/ / Cria o botão UIButton buttonWithType : UIButtonTypeRoundedRect ] ; botão = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 10 , 180 , 300 , 30 ) ; bottone.frame = CGRectMake (10, 180, 300, 30); @ "Premi qui" forState : UIControlStateNormal ] ; [Botão setTitle: @ "Clique aqui" forState: UIControlStateNormal]; self action : @selector ( controllaNumero ) forControlEvents : UIControlEventTouchUpInside ] ; Botão [AddTarget: acção de auto: @ selector (getNumber) forControlEvents: UIControlEventTouchUpInside]; bottone ] ; [Janela addSubview: botão];
; [MyLabel release]; ; [NavigationItem release]; ; [MyNavigationBar release]; |
della scorsa volta, subito dopo il [mainWindow release]; inseriamo: Desde o ' applicationDidFinishLaunching corresponde a viewDidLoad como da última vez, logo após a [mainWindow release]; inserção:
1
| + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random () 10%; |
Agora, podemos fazer é implementar o método controllaNumero , que será idêntico (para além do protótipo) à utilizada a última vez:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| void ) controllaNumero { - (Void) {getNumber "Premuto bottone di controlla numero" ) ; NSLog (@ "número de controle pressionado o botão"); [ numero.text integerValue ] ; numeroInserito int = [numero.text integerValue]; message; NSString * mensagem; "Il numero inserito è %d" , numeroInserito ) ; NSLog (@ "O número digitado é% d", numeroInserito); numeroInserito <numeroACaso ) { if (numeroInserito <numeroACaso) { "Troppo basso..." ; mensagem = @ "muito baixo ..."; ( numeroInserito> numeroACaso ) { } Else if (numeroInserito> numeroACaso) { "Troppo alto..." ; mensagem = @ "muito alto ..."; ( numeroInserito == numeroACaso ) { } Else if (numeroInserito numeroACaso ==) { "Bravo hai indovinato" ; mensagem = @ "Bravo você adivinhou-lo"; + arc4random ( ) % 10 ; numeroACaso = 1 + arc4random () 10%; "Numero pensato %d" , numeroACaso ) ; NSLog (@ "% d Número pensei," numeroACaso); } [ [ UIAlertView alloc ] UIAlertView alertMessaggio * = [[UIAlertView alloc] "Responso" initWithTitle: @ "Resposta" mensagem: mensagem delegado: nil "OK" cancelButtonTitle: @ "OK" ] ; otherButtonTitles: nil]; ; [AlertMessaggio show]; ; [AlertMessaggio release]; "" ; numero.text @ = ""; } |
Nós somos feitos!
Conclusões e considerações
, proprio perchè volevo lasciarlo il più semplice e snello possibile e, anche, per dimostrare che non sono elementi sempre necessari. Este exemplo não fazer uso direto de um UIView ou UIViewController , porque eu queria deixá-lo tão simples e aligeirados quanto possível e, também, para mostrar que os elementos não são sempre necessários. No entanto, a inserção de objetos diretamente na janela pode ter algum sentido neste exemplo e em outros contextos esporádicos. portano comunque benefici in tantissimi altri casi, ein alcuni sono praticamente indispensabili; come avremo modo di vedere in futuro. O uso de UIView e UIViewController ainda trazer benefícios em muitos outros casos, ena alguns são quase indispensáveis, como veremos no futuro.
Leia mais ...
A primeira fonte que eu fui em suas mãos foi escrito em Basic e consistia de algumas linhas de código, para iluminar-me. Era um jogo simples que gerou um número aleatório de 1 a 10 e, através da entrada de teclado, provou que o número digitado foi Maggione, inferior ou igual ao número aleatório. Apesar de sua simplicidade rude continua a ser, para mim, um dos melhores exemplos - simples, divertido e prático - para explicar a quem não sei nada sobre programação que se entende realmente de "programa de computador". Então eu decidi propor-lo para o iPhone da Apple, talvez ajude alguém ...
Leia mais ...
Últimos Comentários
Assunto : muito útil mesmo! Eu tentei isso e é exatamente o que eu precisava. Agora eu quero saber como faço para obter ...
vik : Com a ajuda estratégica!
Pimenta : Olá, eu não sei se você é um dos criadores do plugin WP Bannerize. Tenho visto um ...
Rosanna : Alguém pode me dizer como faço para excluir o Snap Shots janela que se abre automaticamente quando eu ...
bendito Maresca : Eu não posso fazer download de qualquer skypemote me spiegaaa