在我的表视图中,我有几个自定义单元格。一个称为按钮单元,因为它包含几个按钮。其中一个是我试图称为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并按照我的计划工作!再次感谢所有信息和链接。
答案 0 :(得分:3)
UITableViewCell来自UIView而不是UIViewController,这就是为什么“presentViewController:animated:completion:
”不是您从子类表视图单元格中选择的原因。
如果要呈现活动视图控制器,则需要(以某种方式)获取对视图控制器的引用,即您的单元格(位于内容视图中的表格中等)位于其中。
然后然后使用该视图控制器引用(我将其命名为“myViewController
”),您可以调用“[myViewController presentViewController: avc animated: YES completion: nil];
”
P.S。还有一件事:对于Objective-C,最佳做法是变量和方法名称应以小写字母开头(使用“share
”而不是“Share
”)。