システムが提供する[共有]ボタンを使用します。ユーザーはこのボタンの意味と動作に精通しているため、可能な場合は使用することをお勧めします。これの主な例外は、アプリにツールバーまたはナビゲーションバーが含まれていない場合です。[共有]ボタンはツールバーまたはナビゲーションバーでのみ使用できます。
わかりましたが、「システムが提供する[共有]ボタンを使用するにはどうすればよいですか?」 ドキュメントの検索 は何も役に立たない。
タップされているボタンへのresponseでUIActivityViewControllerを使用する必要があります を収集しましたが、そもそも標準の共有ボタンをどのように作成しますか? ?
標準の[共有]ボタンはUIBarButtonItemです(したがって、ナビゲーションバーまたはツールバーにのみ移動できます)。 「システムアイテム」を作成する ;具体的には、 「アクションアイテム」 。 「アクション」バーのボタン項目は「共有」ボタンです。
これがコードです。私はあなたがViewControllerの中にいると仮定しているので、selfには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;
そして、アクションとして呼び出されるセレクターメソッドを定義します(私の場合は "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];
}
Swift 3。
func addShareBarButtonItem() {
let shareButton = UIBarButtonItem(barButtonSystemItem: .Action, target: self, action: #selector(MyViewController.shareButtonPressed))
self.navigationItem.rightBarButtonItem = shareButton
}
func shareButtonPressed() {
//Do something now!
}
システム提供のアクションボタンは、Interface Builderを使用して完全に作成することもできます。そのためには、IToolbarをビューにドラッグアンドドロップします。 IBarButtonItemをUIToolbarにドラッグアンドドロップするよりも。次のステップとして、ビュー階層でIBarButtonItemを選択し、属性インスペクターに移動して、システム項目として「アクション」を選択します。 完了!
さらに、IBarButtonItemをクラスにIBOutletまたはIBActionとして接続することもできます。
注:私は参照としてXcode 7を使用します。
Swift 4/Xcode 10:
1)アクションの初期文字が変更されました:
let shareButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareButtonPressed))
2)@objを追加:
@objc func shareButtonPressed() {
//Do something now!
}