2013-08-28 15 views
5

Powiedz, że chcesz coś zrobić po zakończeniu przez użytkownika. Co robisz?Dlaczego SLComposeViewController nie ma delegata?

To nie ma delegata. Co należy zrobić po odrzuceniu kontrolera widoku?

+1

To, co jest dla obsługi zakończenie. –

+0

Argh Tęskniłem za tym. Teraz używają tego zamiast delegata. –

Odpowiedz

3

W dokumentacji Apple znajdziesz, że SLComposeViewController ma właściwość obsługi zakończenia zamiast delegata. Trzeba tylko ustawić tę właściwość za pomocą metody setCompletionHandler. Następnie należy użyć stałej SLComposeViewControllerResult, aby odzyskać, czy wpis został opublikowany lub anulowany, i podjąć odpowiednie działania.

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

}

Powiązane problemy