2013-03-25 77 views
3

我需要在iOS中實現「share as ...」功能。 例如,一個按鈕命名爲「share as ...」,並彈出一個對話框,其中包含電子郵件,短信,Facebook,Twitter等項目。 我不知道是否有一個標準的對話框做這項工作。實現share功能的標準方式

+0

這個討論也符合問題o f如何實際將共享操作*按鈕*放入UI中:http://stackoverflow.com/questions/19736440/how-do-i-create-a-standard-ios-share-button – natevw 2014-05-08 23:22:04

回答

0

使用UIActivityViewController後,我相信這是一個比我在下面發佈的更好的解決方案。我留下了我的答案,因爲個人分享方法可能對某人有用。

這是我如何在我的項目實施股的特點:

電子郵件:使用MFMailComposeViewController。請參閱文件的位置:http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMailComposeViewController_class/Reference/Reference.html

Facebook的Twitter的&:使用SLComposeViewController。在這裏看到的文檔:http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Reference/SLComposeViewController_Class/Reference/Reference.html

例子:

// prepare and present SLComposeViewController if service is available 
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { 
    SLComposeViewController *socialPost = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    [socialPost setInitialText:@"TEXT FOR POST"]; 
    [socialPost addImage:[UIImage imageNamed:@"yourImage.png"]]; 

    [self presentViewController:socialPost animated:YES completion:nil]; 
} 

// set up a completion handler 
[socialPost setCompletionHandler:^(SLComposeViewControllerResult result) { 
    switch (result) { 
     case SLComposeViewControllerResultDone: 
      // post was completed 
      break; 
     case SLComposeViewControllerResultCancelled: 
      // post was cancelled 
      break; 
     default: 
      break; 
    } 
} 

注意:如果您想發表Twitter的,上面的代碼示例中與SLServiceTypeTwitter取代SLServiceTypeFacebook

6

搜索後,我發現一種方式在iOS6中通過使用UIActivityViewController似乎相當「標準」的方式。

以下是從developer.apple.com說明:

的UIActivityViewController類是可用來從你的應用程序提供各種服務的標準視圖控制器。該系統提供多種標準服務,例如將項目複製到粘貼板,將內容發佈到社交媒體網站,通過電子郵件或SMS發送項目等等。應用程序還可以定義定製服務。

而且下面是一個對話框,我設法用UIActivityViewController

enter image description here

而繼產生的源代碼我使用:

NSArray *activityItems = [NSArray arrayWithObjects: share_text.text, share_image.image , nil]; 

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; 
    [self presentViewController:activityController animated:YES completion:nil]; 
+0

看着'UIActivityViewController'這是一個比我發佈的更好的共享解決方案。感謝發佈! +1 – rog 2013-03-30 07:01:59

1

在你ViewController.m:

NSString *message = @"The Flyer http://flyerdream.tumblr.com"; 
UIImage *image = [UIImage imageNamed:@"flyer"]; 
NSArray *arrayOfActivityItems = [NSArray arrayWithObjects:message, image, nil]; 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] 
             initWithActivityItems:arrayOfActivityItems applicationActivities:nil]; 

[self.navigationController presentViewController:activityVC animated:YES completion:nil];