Melhore sua vida, sua interface e diga adeus à UIAlertView
-
Upload
gustavo-ambrozio -
Category
Technology
-
view
513 -
download
3
Transcript of Melhore sua vida, sua interface e diga adeus à UIAlertView
![Page 1: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/1.jpg)
Melhore sua vida, sua interface e diga adeus à
UIAlertView
Gustavo Pelosi Ambrozio
1
![Page 2: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/2.jpg)
Programação
• Amor e ódio pela UIAlertView
• Como os Blocks me livraram do ódio
• O ódio renasce com outra face
• Uma visão de como se livrar do ódio
• Eliminando o ódio com código
• Espalhando o amor
2
![Page 3: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/3.jpg)
Amor e ódio pela UIAlertView
• (aparentemente) Fácil de usar
• Prático
• Delegates
• Swithes
• Tags
• Constantes
3
![Page 4: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/4.jpg)
@interface MyViewController : UIViewController <UIAlertViewDelegate>
#define kRemoveConfirmAlertView 1#define kSendAlertView 2#define kLogoutConfirmAlertView 3
- (IBAction)sendItem:(id)sender{ UIAlertView *view = [[UIAlertView alloc] initWithTitle:@”Enviar por” message:@”Como deseja enviar ?” delegate:self cancelButtonTitle:@”Cancelar” otherButtonTitles:@”Twitter”, @”Facebook”, @”Email”, nil]; view.tag = kSendAlertView; [view show]; [view release];}
4
![Page 5: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/5.jpg)
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
switch (alertView.tag){
case kRemoveConfirmAlertView:if (buttonIndex == 1)
[self removeItem];break;
case kSendAlertView:{
switch (buttonIndex){
case 0: // Cancelbreak;
case 1: // Twitter[self sendWith:kTwitter];break;
case 2: // Facebook[self sendWith:kFacebook];break;
case 3: // emailMFMailComposeViewController *view = [[MFMailComposeViewController alloc] init];view.mailComposeDelegate = self;[self.navigationController presentModalViewController:view animated:YES];break;
}}break;
}}
5
![Page 6: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/6.jpg)
Como os Blocks me livraram do ódio
• PSFoundation (https://github.com/steipete/PSFoundation/tree/master/Utils)
• Peter Steinberger
• PSAlertView e PSActionSheet
• Renomeado para BlockAlertView e BlockActionSheet
6
![Page 7: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/7.jpg)
@interface MyViewController : UIViewController <UIAlertViewDelegate>
#define kRemoveConfirmAlertView 1#define kSendAlertView 2#define kLogoutConfirmAlertView 3
- (IBAction)sendItem:(id)sender{ BlockAlertView *view = [BlocAlertView alertWithTitle:@”Enviar por” message:@”Como deseja enviar ?”]; [view setCancelButtonWithTitle:@”Cancelar” block:nil]; [view addButtonWithTitle:@”Twitter”, block:^{ [self sendWith:kTwitter]; }]; [view addButtonWithTitle:@”Facebook”, block:^{ [self sendWith:kFacebook]; }]; [view addButtonWithTitle:@”Email”, block:^{ MFMailComposeViewController *view = [[MFMailComposeViewController alloc] init];
view.mailComposeDelegate = self;[self.navigationController presentModalViewController:view animated:YES];
}]; view .tag = kSendAlertView; [view show];}
7
![Page 8: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/8.jpg)
- (IBAction)sendItem:(id)sender{ BlockAlertView *view = [BlocAlertView alertWithTitle:@”Enviar por” message:@”Como deseja enviar ?”];
[view setCancelButtonWithTitle:@”Cancelar” block:nil];
[view addButtonWithTitle:@”Twitter”, block:^{ [self sendWith:kTwitter]; }];
[view addButtonWithTitle:@”Facebook”, block:^{ [self sendWith:kFacebook]; }];
[view addButtonWithTitle:@”Email”, block:^{ MFMailComposeViewController *view = [[MFMailComposeViewController alloc] init];
view.mailComposeDelegate = self;[self.navigationController presentModalViewController:view animated:YES];
}];
[view show];}
8
![Page 9: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/9.jpg)
Lição número 1
1. Substitua delegates por blocks (quase) sempre
• Exceção: Quando a classe que executa a ação pode ser dispensada antes do bloco ser executado (NSURLConnection, por exemplo)
9
![Page 10: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/10.jpg)
O ódio renasce com outra face
10
![Page 11: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/11.jpg)
Uma visão de como se livrar do ódio
11
![Page 12: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/12.jpg)
Lições número 2 e 3
2. Não fique preso à API da Apple
3. Não tenha preguiça de implementar do zero
12
![Page 13: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/13.jpg)
Eliminando o ódio com código
UIWindow
UView
UILabel
UIButton
13
![Page 14: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/14.jpg)
Lição número 4
4. UIWindow é uma classe obscura e pouco usada (e pessimamente documentada) mas que pode resolver vários problemas de interface. Use com sabedoria.
14
![Page 15: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/15.jpg)
Eliminando o ódio
15
![Page 16: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/16.jpg)
Espalhando o amor
• BlockAlertView e BlockActionSheets são open source
• github.com/gpambrozio/BlockAlertsAnd-ActionSheets
• blog.codecropper.com/2012/01/replicating-tweetbot-alerts-and-action-sheets/
• Melhorias à UIAlertView e UIActionSheet
16
![Page 17: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/17.jpg)
Espalhando o amor
• Importar 6 arquivos, 3 .h e 3 .m
• Copiar um arquivo .h com definições de UI
• Copiar os assets ou criar os seus
• Alterar UI (opcional)
17
![Page 18: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/18.jpg)
- (IBAction)sendItem:(id)sender{ BlockAlertView *view = [BlocAlertView alertWithTitle:@”Enviar por” message:@”Como deseja enviar ?”];
[view setCancelButtonWithTitle:@”Cancelar” block:nil];
[view addButtonWithTitle:@”Twitter”, block:^{ [self sendWith:kTwitter]; }];
[view addButtonWithTitle:@”Facebook”, block:^{ [self sendWith:kFacebook]; }];
[view setDestructiveButtonWithTitle:@”Apagar”, block:^{ [self removeItem]; }];
[view show];}
18
![Page 19: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/19.jpg)
Espalhando o amor
19
![Page 20: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/20.jpg)
Amor avançado• Fundo e botões são apenas PNGs
20
![Page 21: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/21.jpg)
Amor avançado• É só uma UIView....
[BlockBackgroundsharedInstance]
UIView
21
![Page 22: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/22.jpg)
Amor avançado• BlockTextPromptAlertView
22
![Page 23: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/23.jpg)
Amor animado
23
![Page 24: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/24.jpg)
Lição número 5
5. Abrir o código é bom: Melhora seu karma, sua reputação e até seu código.
24
![Page 25: Melhore sua vida, sua interface e diga adeus à UIAlertView](https://reader031.fdocumentos.tips/reader031/viewer/2022020218/55a3cef11a28ab0f0d8b47cb/html5/thumbnails/25.jpg)
Gustavo Ambrozio
• @gpambrozio
• blog.codecropper.com
• github.com/gpambrozio
• linkedin.com/in/gustavoambrozio
25