Ios ipad上tableViewCell popover的Sharesheet
我正试图从cusom单元格中的一个按钮将某些内容共享到共享页,该按钮位于一个显示为popover的UITableView上。我不断得到: 由于未捕获的异常“NSInvalidArgumentException”,正在终止应用程序,原因是:“应用程序试图在其自身上呈现模式视图控制器。呈现控制器是Ios ipad上tableViewCell popover的Sharesheet,ios,swift,uitableview,uiactivityviewcontroller,Ios,Swift,Uitableview,Uiactivityviewcontroller,我正试图从cusom单元格中的一个按钮将某些内容共享到共享页,该按钮位于一个显示为popover的UITableView上。我不断得到: 由于未捕获的异常“NSInvalidArgumentException”,正在终止应用程序,原因是:“应用程序试图在其自身上呈现模式视图控制器。呈现控制器是 我意识到这是因为这是在UITableViewCell上调用的,但我不知道如何以正确的方式执行?有什么帮助吗?您需要将vc.present更改为TableViewController.present。当然,
我意识到这是因为这是在UITableViewCell上调用的,但我不知道如何以正确的方式执行?有什么帮助吗?您需要将
vc.present
更改为TableViewController.present
。当然,您没有从单元格中获取对该视图控制器的引用。如何从单元格中获取对该视图控制器的引用?可能是在加载UItableViewCell时,您可以将tableVIewController的弱引用设置为UItableViewCell。因此,您可以避免保留循环,同时还可以显示视图控制器。此代码应在视图控制器中执行,而不是在单元格中执行。使用委派或闭包将单元格调用代码保存在视图控制器CAN中
func passToShareSheet(fileName: String, ext: String, stringToWriteToFile: String){
let fileName = "\(fileName).\(ext)"
let path = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(fileName)
do {
try stringToWriteToFile.write(to: path!, atomically: true, encoding: String.Encoding.utf8)
let vc = UIActivityViewController(activityItems: [path as Any], applicationActivities: [])
vc.popoverPresentationController?.sourceView = self
vc.present(vc, animated: true, completion: nil)
print(stringToWriteToFile)
} catch {
print("Failed to create file")
print("\(error)")
}
}