2013-08-28 8 views
5

Angenommen, Sie möchten etwas tun, sobald der Benutzer fertig ist. Wie geht's?Warum hat SLComposeViewController keinen Delegaten?

Es hat keinen Delegaten. Was ist zu tun, wenn ein Controller für die aktuelle Ansicht geschlossen wird?

+1

Das ist, was die Fertigstellung Handler für ist. –

+0

Argh das habe ich verpasst. Jetzt benutzen sie das anstatt zu delegieren. –

Antwort

3

In der Apple-Dokumentation finden Sie, dass SLComposeViewController eine Completion-Handler-Eigenschaft anstelle eines Delegaten hat. Sie müssen diese Eigenschaft nur mithilfe der setCompletionHandler-Methode festlegen. Anschließend verwenden Sie die Konstante SLComposeViewControllerResult, um zu ermitteln, ob der Post gebucht oder storniert wurde, und entsprechend Maßnahmen zu ergreifen.

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

}

Verwandte Themen