2012-11-21 9 views
94

Niektóre aplikacje wyświetlają domyślny arkusz akcji na iOS 6 z opcjami udostępniania.Jak wyświetlić domyślny arkusz akcji akcji iOS 6 z dostępnymi opcjami udziału?

Social Framework ma tylko dwie klasy, jedną do komponowania i jedną do żądania.

Co jednak znalazłem, to komponowanie dla konkretnej usługi za pomocą SLComposeViewController i zanim to pokażę, muszę ręcznie zapytać, czy usługa jest dostępna. A potem muszę również stworzyć własny arkusz akcji z własnymi ikonami.

W jaki sposób aplikacje wyświetlają ten domyślny arkusz akcji do udostępniania w systemie iOS 6? Czy też używają środowiska open source?

+0

Chcę otworzyć arkusz akcji z niestandardową ikoną, jak wechat, weibo, qq i zintegrować z nią funkcjonalność, w jaki sposób mogę to zrobić? – RaviJSS

+0

Sprawdź również ten link również .. http://stackoverflow.com/a/35267035/3908884 –

+0

[Oto podstawowy przykład korzystania z Swift] (http://stackoverflow.com/a/35931947) – Suragch

Odpowiedz

222

Wymieniona w drugiej odpowiedzi UIActivityViewController czyni to banalnie. Wszystko, co musisz zrobić, to określić tekst/obraz/adres URL, który chcesz udostępnić i zaprezentować kontroler widoku aktywności, a system iOS automatycznie wyświetli wszystkie odpowiednie usługi udostępniania. Przykłady:

Cel C

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(URL *)url 
{ 
    NSMutableArray *sharingItems = [NSMutableArray new]; 

    if (text) { 
     [sharingItems addObject:text]; 
    } 
    if (image) { 
     [sharingItems addObject:image]; 
    } 
    if (url) { 
     [sharingItems addObject:url]; 
    } 

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil]; 
    [self presentViewController:activityController animated:YES completion:nil]; 
} 

Swift

func share(sharingText: String?, sharingImage: UIImage?, sharingURL: URL?) { 
    let sharingItems:[AnyObject?] = [ 
             sharingText as AnyObject, 
             sharingImage as AnyObject, 
             sharingURL as AnyObject 
            ] 
    let activityViewController = UIActivityViewController(activityItems: sharingItems.flatMap({$0}), applicationActivities: nil) 
    if UIDevice.current.userInterfaceIdiom == .pad { 
     activityViewController.popoverPresentationController?.sourceView = view 
    } 
    present(activityViewController, animated: true, completion: nil) 
} 
+6

Ładna edycja dla Swift wersja. Chciałbym zmienić .append (element) dla elementu + =. Wygląda bardziej swift-y –

+2

W najnowszej wersji Swift, zamień 'AnyObject []()' na '[AnyObject]()' –

+5

Jego działanie, tylko po zalogowaniu się na odpowiednie konta w ustawieniach (facebook/twitter), Ale W aplikacji Zdjęcia aplikacja/Notatki dostępne są opcje, nawet jeśli użytkownik nie jest zalogowany, Proszę wyjaśnić, dlaczego tak się dzieje? Czy istnieje inne obejście? –

39

Dodaj aby używać UIActivityViewController.

-(IBAction)shareButtonPressed:(id)sender { 

    NSLog(@"shareButton pressed"); 

    NSString *texttoshare = _txt; //this is your text string to share 
    UIImage *imagetoshare = _img; //this is your image to share 
    NSArray *activityItems = @[texttoshare, imagetoshare];  
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint]; 
    [self presentViewController:activityVC animated:TRUE completion:nil]; 
} 
+2

Preferowana odpowiedź do mnie, ponieważ pokazujesz także wykluczanie. –

Powiązane problemy