melhore sua vida, sua interface e diga adeus à uialertview

25
Melhore sua vida, sua interface e diga adeus à UIAlertView Gustavo Pelosi Ambrozio 1

Upload: gustavo-ambrozio

Post on 13-Jul-2015

513 views

Category:

Technology


3 download

TRANSCRIPT

Page 2: Melhore sua vida, sua interface e diga adeus à UIAlertView

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

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

@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

- (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 7: Melhore sua vida, sua interface e diga adeus à UIAlertView

@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

- (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

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

O ódio renasce com outra face

10

Page 11: Melhore sua vida, sua interface e diga adeus à UIAlertView

Uma visão de como se livrar do ódio

11

Page 12: Melhore sua vida, sua interface e diga adeus à UIAlertView

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

Eliminando o ódio com código

UIWindow

UView

UILabel

UIButton

13

Page 14: Melhore sua vida, sua interface e diga adeus à UIAlertView

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

Eliminando o ódio

15

Page 16: Melhore sua vida, sua interface e diga adeus à UIAlertView

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

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

- (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

Espalhando o amor

19

Page 20: Melhore sua vida, sua interface e diga adeus à UIAlertView

Amor avançado• Fundo e botões são apenas PNGs

20

Page 21: Melhore sua vida, sua interface e diga adeus à UIAlertView

Amor avançado• É só uma UIView....

[BlockBackgroundsharedInstance]

UIView

21

Page 22: Melhore sua vida, sua interface e diga adeus à UIAlertView

Amor avançado• BlockTextPromptAlertView

22

Page 23: Melhore sua vida, sua interface e diga adeus à UIAlertView

Amor animado

23

Page 24: Melhore sua vida, sua interface e diga adeus à UIAlertView

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

Gustavo Ambrozio

• @gpambrozio

• blog.codecropper.com

• github.com/gpambrozio

• linkedin.com/in/gustavoambrozio

25