呈现从 UITableViewCell 内部启动的 UIActivityViewController

Posted

技术标签:

【中文标题】呈现从 UITableViewCell 内部启动的 UIActivityViewController【英文标题】:Presenting UIActivityViewController initiating from inside UITableViewCell 【发布时间】:2015-06-22 14:37:10 【问题描述】:

下面的代码工作正常,当放入PostsVC(Mian View Controller)时显示UIActivityViewController,但给出cell没有名为'presentViewController'的成员错误当放置在同一 PostsVC 视图控制器上的 UITableViewCell 内的 UIButton 的点击操作时。

如何在最后一行代码中引用 PostsVC 来呈现它?

let appAddress =  "https://itunes.apple.com/app/id978654?ls=1&mt=8"
let shareText = "Share our app "
let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [shareText, appAddress], applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion: nil)

【问题讨论】:

【参考方案1】:

在单元子类中添加对视图控制器的弱引用。在 cellForRowAtIndexPath 中设置:

cell.viewController = self

然后调用 cell.viewController 上的 presentViewController 方法,而不是单元格本身。

【讨论】:

在线错误cell.viewController = self'cell' 没有名为'viewController' 的成员 @Kashif 是的,你必须在你的单元子类中添加一个属性 对于其他人阅读,您必须在您的单元格子类中执行weak var parentViewController = UIViewController()

以上是关于呈现从 UITableViewCell 内部启动的 UIActivityViewController的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableViewCell 呈现 UIViewController:addChildViewController 无法识别的选择器发送到实例

重新启动时片段内部的 GLSurfaceView 不呈现

在呈现的视图控制器上的 UITableViewCell 中呈现 UIAlertController

UITableViewCell 在首次加载时无法正确呈现

如何从 UITableViewCell 获取当前位置(帧)?

从模态呈现的视图控制器内部呈现 UIPopoverController