如何创build标准的iOS Sharebutton?

iOS人机界面指南说 :

使用系统提供的“共享”button。 用户熟悉这个button的含义和行为,所以尽可能使用它是一个好主意。 这个主要的例外是,如果你的应用程序不包含工具栏或导航栏[,因为]共享button只能在工具栏或导航栏中使用。

好的,但我该如何“使用系统提供的分享button”? search文档变得没有用。

我已经收集到, 我应该使用UIActivityViewController在我点击的button的响应 ,但如何创build标准的共享button?

标准的共享button是一个UIBarButtonItem(所以它只能在导航栏或工具栏上)。 你需要创build一个“系统项目” ; 具体而言, 是一个“行动项目” 。 “动作”栏button项目是Share(分享)button。

这是代码。 我假设你在ViewController里面,所以我自己有navigationItem属性。

UIBarButtonItem *shareButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(shareAction:)]; self.navigationItem.rightBarButtonItem = shareButton; 

这在你的viewDidLoad:

 UIBarButtonItem *shareButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(compartir:)]; self.navigationItem.rightBarButtonItem = shareButton; 

并定义您的select器方法被称为行动(在我的情况下命名为“compartir”):

 - (void) compartir:(id)sender{ //Si no NSLog(@"shareButton pressed"); NSString *stringtoshare= @"This is a string to share"; UIImage *imagetoshare = img; //This is an image to share. NSArray *activityItems = @[stringtoshare, imagetoshare]; UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypePostToTwitter, UIActivityTypePostToWeibo]; [self presentViewController:activityVC animated:TRUE completion:nil]; } 

系统提供的Actionbutton也可以通过Interface Builder完全创build。 为此,只需将UIToolbar拖放到您的视图中即可。 将UIBarButtonItem拖放到UIToolbar中。 下一步在视图层次结构中selectUIBarButtonItem ,转到属性检查器,并select“操作”作为系统项目。 完成!

此外,还可以将UIBarButtonItem与IBOutlet或IBAction的类连接起来。

请注意:我使用Xcode 7作为参考。

Main.storyboard – > Bar Button Item – > Inspector – > System Itemselect了“Action” 在这里输入图像说明

这里是Swift 3的代码。

 func addShareBarButtonItem() { let shareButton = UIBarButtonItem(barButtonSystemItem: .Action, target: self, action: #selector(MyViewController.shareButtonPressed)) self.navigationItem.rightBarButtonItem = shareButton } func shareButtonPressed() { //Do something now! }