web-dev-qa-db-ja.com

標準のiOS共有ボタンを作成するにはどうすればよいですか?

iOSヒューマンインターフェイスガイドラインによると

システムが提供する[共有]ボタンを使用します。ユーザーはこのボタンの意味と動作に精通しているため、可能な場合は使用することをお勧めします。これの主な例外は、アプリにツールバーまたはナビゲーションバーが含まれていない場合です。[共有]ボタンはツールバーまたはナビゲーションバーでのみ使用できます。

わかりましたが、「システムが提供する[共有]ボタンを使用するにはどうすればよいですか?」 ドキュメントの検索 は何も役に立たない。

タップされているボタンへのresponseでUIActivityViewControllerを使用する必要があります を収集しましたが、そもそも標準の共有ボタンをどのように作成しますか? ?

37
Peter Hosey

標準の[共有]ボタンはUIBarButtonItemです(したがって、ナビゲーションバーまたはツールバーにのみ移動できます)。 「システムアイテム」を作成する ;具体的には、 「アクションアイテム」 。 「アクション」バーのボタン項目は「共有」ボタンです。

41
Peter Hosey

これがコードです。私はあなたがViewControllerの中にいると仮定しているので、selfにはnavigationItemプロパティがあります。

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

これはあなたの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];
}
13
danielrosero

Main.storyboard->バーボタンアイテム->インスペクター->システムアイテムは「アクション」を選択しました enter image description here

6
saneryee

Swift 3。

func addShareBarButtonItem() {

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

    self.navigationItem.rightBarButtonItem = shareButton
}

func shareButtonPressed() {
    //Do something now!
}
3
jarora

システム提供のアクションボタンは、Interface Builderを使用して完全に作成することもできます。そのためには、IToolbarをビューにドラッグアンドドロップします。 IBarButtonItemをUIToolbarにドラッグアンドドロップするよりも。次のステップとして、ビュー階層でIBarButtonItemを選択し、属性インスペクターに移動して、システム項目として「アクション」を選択します。 完了!

さらに、IBarButtonItemをクラスにIBOutletまたはIBActionとして接続することもできます。

注:私は参照としてXcode 7を使用します。

2
dzensik

Swift 4/Xcode 10:

1)アクションの初期文字が変更されました:

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

2)@objを追加:

@objc func shareButtonPressed() {
    //Do something now!
}
1
ingconti