2013-08-28 17 views
5

Dire che vuoi fare qualcosa una volta che l'utente ha terminato. cosa fai?Perché SLComposeViewController non ha delegato?

Non ha un delegato. Cosa fare una volta che il controller di una vista attuale è stato rimosso?

+1

Questo è ciò che il gestore di completamento è per. –

+0

Argh mi è mancato. Ora lo usano invece di delegare. –

risposta

3

Nella documentazione di Apple, SLComposeViewController dispone di una proprietà di gestore di completamento anziché di un delegato. Hai solo bisogno di impostare quella proprietà usando il metodo setCompletionHandler. Quindi si utilizza la costante SLComposeViewControllerResult per recuperare se il post è stato pubblicato o annullato e agire di conseguenza.

-(void) shareToFacebook { 
//1. Set link and image 
NSString *appLink = @"https://itunes.apple.com/app/id989793966"; 
UIImage *twitterImage = [UIImage imageNamed:@"TF_400x400.png"]; 

//2. Check if we can share 
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 

    //3. Compose the share view controller 
    SLComposeViewController *FBViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 

    [FBViewController addURL:[NSURL URLWithString:appLink]]; 

    [FBViewController addImage:twitterImage]; 

    //4 Set completion handler and define actions to take 
    [FBViewController setCompletionHandler:^(SLComposeViewControllerResult result) 
    { 
     if (result == SLComposeViewControllerResultCancelled) { 

      [self addEmptyScreenButtonTargets]; 

     } else if (result == SLComposeViewControllerResultDone) { 

      //Unlock words; show thank you screen 
      [NewCardManager unlockWordsForPackage:4]; 

      [self openFBThankYouScreen]; 
     } 
    }]; 

    //5. Call to modally present the share controller 
    [self presentViewController:FBViewController animated:YES completion:nil]; 
} 

}

Problemi correlati