Melhore sua interface com Blocks e elimine o ódio pela UIAlertView
1. Melhore sua vida, sua
interface e diga adeus à
UIAlertView
Gustavo Pelosi Ambrozio
1
2. 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
3. Amor e ódio pela UIAlertView
• (aparentemente) Fácil de • Delegates
usar
• Swithes
• Prático
• Tags
• Constantes
3
5. - (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
6. 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
9. 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
14. 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
16. 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
17. 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