42

iOS 人机界面指南说

使用系统提供的分享按钮。用户熟悉此按钮的含义和行为,因此最好尽可能使用它。主要的例外情况是,如果您的应用程序不包含工具栏或导航栏 [,因为] 共享按钮只能在工具栏或导航栏中使用。

好的,但是我如何“使用系统提供的分享按钮”?搜索文档没有任何用处。

我已经收集到我应该使用 UIActivityViewController 来响应被点击的按钮,但是我将如何首先创建标准的共享按钮?

4

7 回答 7

44
于 2013-11-01T22:30:52.710 回答
27

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

UIBarButtonItem *shareButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                     target:self
                     action:@selector(shareAction:)];
self.navigationItem.rightBarButtonItem = shareButton;
于 2014-04-27T09:37:09.637 回答
13

这在您的 viewDidLoad 中:

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

并定义你的选择器方法被称为动作(在我的例子中命名为“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:YES completion:nil];
}
于 2016-01-18T14:04:26.723 回答
6

Main.storyboard -> Bar Button Item -> Inspector -> System Item 选择“Action”在此处输入图像描述

于 2016-07-12T22:33:52.323 回答
3

swift 4 / Xcode 10 只有我的两分钱:

1) 动作改变了初始字符:

let shareButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareButtonPressed))

2)添加@obj:

@objc func shareButtonPressed() {
    //Do something now!
}
于 2018-09-01T14:23:19.227 回答
3

这是 Swift 3 的代码。

func addShareBarButtonItem() {

    let shareButton = UIBarButtonItem(barButtonSystemItem: .Action, target: self, action: #selector(MyViewController.shareButtonPressed))

    self.navigationItem.rightBarButtonItem = shareButton
}

func shareButtonPressed() {
    //Do something now!
}
于 2016-11-26T13:57:18.700 回答
2

系统提供的 Action 按钮也可以完全使用 Interface Builder 创建。为此,只需将UIToolbar拖放到您的视图中。比将UIBarButtonItem拖放到 UIToolbar 中。作为下一步在视图层次结构中选择UIBarButtonItem,转到属性检查器并选择“操作”作为系统项。完毕!

此外,可以将UIBarButtonItem与您的类连接为 IBOutlet 或 IBAction。

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

于 2015-10-27T13:58:52.050 回答