1

私のテーブル ビューには、いくつかのカスタム セルがあります。1 つには複数のボタンが含まれているため、ボタン セルと呼ばれます。そのうちの 1 つは、UIActivityViewController を呼び出そうとしている共有ボタンです。しかし、私はそれを働かせることができません。UITableViewCell をサブクラス化し、ButtonCell と呼びました。ヘッダー ファイルで、Share という IBAction をリンクしました。実装ファイル(ButtonCell.m)では、以下を試しました。

- (IBAction)Share
{

NSString *initialText = [NSString stringWithFormat:@"I like this Catherine Pooler Blog Post: "];
UIImage *image = [UIImage imageNamed:@"iTunesArtwork.png"];

UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[image, initialText] applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
}

ただし、コンパイラは自分自身が好きではありません。presentViewController:animated:completion の可能性は表示されません。ボタンを使用してカスタム セルから UIActivityViewController を表示する方法はありますか。ご助力いただきありがとうございます。

EDIT #1 Michael と A-live のおかげで解決できました。すべての助けをありがとう。

私の cellForRowAtIndexPath メソッドでは、次のコード行を使用しました...

[buttonCell.shareButton addTarget:self action:@selector(shareTapped) forControlEvents:UIControlEventTouchUpInside];  

Target を追加することで、タップを検出し、メソッド shareTapped を呼び出すことができました。これにより、UIActivityViewController が起動し、計画どおりに機能します。すべての情報とリンクをありがとう。

4

1 に答える 1

3

UITableViewCell は、UIViewController ではなく UIView から派生しています。そのpresentViewController:animated:completion:ため、サブクラス化されたテーブル ビュー セルから " " を選択することはできません。

Activity View Controller を提示したい場合は、セル (テーブル内、コンテンツ ビュー内など) が存在するビュー コントローラーへの参照を (何らかの方法で) 取得する必要があります。

そしてそのビュー コントローラ参照 (私は " " と名付けています) を使って、" "myViewControllerを呼び出すことができます。[myViewController presentViewController: avc animated: YES completion: nil];

PS もう 1 つ: Objective-C の場合、ベスト プラクティスは、変数名とメソッド名を小文字で始めることです (" share" ではなく " " を使用しますShare)。

于 2013-06-21T15:00:09.513 に答える