2012-10-03 6 views
7

Sono abbastanza nuovo per i blocchi nell'obiettivo C. Ho letto i documenti e ne ho una comprensione piuttosto elementare.Assegnazione/visualizzazione di UIAlertView in una istruzione Block

Perché non funziona? Questo è un callback di framework per richiedere l'accesso a Calendar. Prende un blocco come argomento. Tutto quello che voglio fare è allocare e mostrare UIAlertView nel blocco, ma si bloccherà quando cercherà di mostrare.

Spero che questa non sia una domanda stupida ... tutti gli esempi di introduzione sulla rete che utilizzano i blocchi mostrano solo esempi banali con contatori.

//Request access 
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { 

      if (granted == FALSE) { 
       UIAlertView *myAlert = [[[UIAlertView alloc]initWithTitle:@"Calendar Access Denied" 
                      message:@"<InfoText>" 
                     delegate:nil 
                   cancelButtonTitle:@"OK" 
                   otherButtonTitles:nil] autorelease]; 
       [myAlert show]; 
      } 
      else { 
       [self addToCalendar]; 
      } 
     }]; 

risposta

24

hai provato?

if (granted == FALSE) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     UIAlertView *myAlert = [[[UIAlertView alloc]initWithTitle:@"Calendar Access Denied" 
                 message:@ <InfoText>" 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil] autorelease]; 
     [myAlert show]; 
    }); 
} 

questo rende richiama nel thread principale, utili per miscelazione blocchi e UIKit