UIActivityViewController从Custom Cell中的按钮调用

时间:2013-06-21 14:56:49

标签: ios uitableview uiactivityviewcontroller

在我的表视图中,我有几个自定义单元格。一个称为按钮单元,因为它包含几个按钮。其中一个是我试图称为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的可能性:动画:完成。有没有办法从带有按钮的自定义单元格中显示UIActivityViewController。谢谢你的帮助。

编辑#1 感谢Michael和A-live,我已经想到了。再次感谢所有的帮助。

在我的cellForRowAtIndexPath方法中,我使用了以下代码行...

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

通过添加目标,我能够检测到点击并调用方法shareTapped。然后调出UIActivityViewController并按照我的计划工作!再次感谢所有信息和链接。

1 个答案:

答案 0 :(得分:3)

UITableViewCell来自UIView而不是UIViewController,这就是为什么“presentViewController:animated:completion:”不是您从子类表视图单元格中选择的原因。

如果要呈现活动视图控制器,则需要(以某种方式)获取对视图控制器的引用,即您的单元格(位于内容视图中的表格中等)位于其中。

然后然后使用该视图控制器引用(我将其命名为“myViewController”),您可以调用“[myViewController presentViewController: avc animated: YES completion: nil];

P.S。还有一件事:对于Objective-C,最佳做法是变量和方法名称应以小写字母开头(使用“share”而不是“Share”)。