• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Melhore sua vida, sua interface e diga adeus à UIAlertView
 

Melhore sua vida, sua interface e diga adeus à UIAlertView

on

  • 559 views

Palestra ministrada em Julho de 2012 na trilha de iOS do TDC 2012 sobre o uso da classe BlockAlertView como substituta da UIAlertView

Palestra ministrada em Julho de 2012 na trilha de iOS do TDC 2012 sobre o uso da classe BlockAlertView como substituta da UIAlertView

Statistics

Views

Total Views
559
Views on SlideShare
553
Embed Views
6

Actions

Likes
0
Downloads
4
Comments
0

4 Embeds 6

http://www.linkedin.com 3
https://si0.twimg.com 1
https://www.linkedin.com 1
https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Melhore sua vida, sua interface e diga adeus à UIAlertView Melhore sua vida, sua interface e diga adeus à UIAlertView Presentation Transcript

    • Melhore sua vida, suainterface e diga adeus à UIAlertView Gustavo Pelosi Ambrozio 1
    • 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
    • Amor e ódio pela UIAlertView• (aparentemente) Fácil de • Delegates usar • Swithes• Prático • Tags • Constantes 3
    • @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
    • - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ switch (alertView.tag) { case kRemoveConfirmAlertView: if (buttonIndex == 1) [self removeItem]; break; case kSendAlertView: { switch (buttonIndex) { case 0: // Cancel break; case 1: // Twitter [self sendWith:kTwitter]; break; case 2: // Facebook [self sendWith:kFacebook]; break; case 3: // email MFMailComposeViewController *view = [[MFMailComposeViewController alloc] init]; view.mailComposeDelegate = self; [self.navigationController presentModalViewController:view animated:YES]; break; } } break; }} 5
    • 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
    • @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
    • - (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
    • Lição número 11. 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
    • O ódio renasce com outra face 10
    • Uma visão de como se livrar do ódio 11
    • Lições número 2 e 32. Não fique preso à API da Apple3. Não tenha preguiça de implementar do zero 12
    • Eliminando o ódio com códigoUIWindowUView UILabel UIButton 13
    • Lição número 44. UIWindow é uma classe obscura e pouco usada (e pessimamente documentada) mas que pode resolver vários problemas de interface. Use com sabedoria. 14
    • Eliminando o ódio 15
    • 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
    • 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
    • - (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
    • Espalhando o amor 19
    • Amor avançado• Fundo e botões são apenas PNGs 20
    • Amor avançado• É só uma UIView.... [BlockBackground sharedInstance] UIView 21
    • Amor avançado• BlockTextPromptAlertView 22
    • Amor animado 23
    • Lição número 55. Abrir o código é bom: Melhora seu karma, sua reputação e até seu código. 24
    • Gustavo Ambrozio• @gpambrozio• blog.codecropper.com• github.com/gpambrozio• linkedin.com/in/gustavoambrozio 25