2012-10-03 3 views
7

Ich bin ziemlich neu zu Blöcken in Ziel C. Ich habe die Dokumente gelesen und ich habe ein ziemlich grundlegendes Verständnis von ihnen.Zuweisung/Anzeigen einer UIAlertView in einer Block-Anweisung

Warum funktioniert das nicht? Dies ist ein Framework-Callback zum Anfordern des Kalenderzugriffs. Es braucht einen Block als Argument. Alles, was ich tun möchte, ist die Zuordnung und Anzeige der UIAlertView im Block, aber es wird abstürzen, wenn es versucht zu zeigen.

Ich hoffe, das ist keine dumme Frage ... alle Intro-Beispiele im Netz mit Blöcken zeigen nur triviale Beispiele mit Zählern.

//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]; 
      } 
     }]; 

Antwort

24

haben Sie es versucht?

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]; 
    }); 
} 

dies macht Anrufe zurück in den Hauptthread, nützlich für Mischblöcke und UIKit