无法使用共享表Swift共享多个图像

问题描述

我正在尝试保存使用视觉套件扫描的多张图像,但似乎仅使用共享表保存了第一张图像。我该如何解决这个问题。

扫描后保存图像

$( "#results-section" ).append( "Your data from the last API call" );

添加了popover控制器代码,因为iPad在调出共享表方面存在问题...

尝试保存多张图像时出现错误代码I

for i in 0...scan.pageCount-1 {
      let originalImage = scan.imageOfPage(at: i)
      let fixedImage =  originalImage.jpegData(compressionQuality: 0.7)
      let reloadedImage = UIImage(data: fixedImage!)
      let imagetoshare = [reloadedImage!]
      
      let activityViewController = UIActivityViewController(activityItems: imagetoshare,applicationActivities: nil)
      if let popoverController = activityViewController.popoverPresentationController {
      popoverController.sourceView = self.view
      popoverController.sourceRect = CGRect(x: self.view.bounds.midX,y: self.view.bounds.midY,width: 0,height: 0)
      popoverController.permittedArrowDirections = []
      }
      // exclude some activity types from the list (optional)
      // present the view controller
      self.present(activityViewController,animated: true,completion: nil)
}

如果您想知道reloadedImage函数是什么:

2020-10-03 16:17:21.300830+0530 Scan Box[1163:132306] [ShareSheet] connection invalidated

编辑: 我已从pageCount中删除了“ -1”,并且出现此错误:

func reloadedImage(_ originalImage: UIImage) -> UIImage {
      guard let imageData = originalImage.jpegData(compressionQuality: 1),let reloadedImage = UIImage(data: imageData) else {
                return originalImage
      }
      return reloadedImage
}

编辑2:

-[VNDocumentCameraScan imageOfPageAtIndex:]: index (2) beyond bounds (2).'

我什至尝试:

       var imagetoShare = [UIImage]()
                for i in 0...scan.pageCount-1 {
                    let originalImage = scan.imageOfPage(at: i)
                    let fixedImage =  originalImage.jpegData(compressionQuality: 0.7)
                    
                    let reloadedImage = UIImage(data: fixedImage!)
                    imagetoShare.append(reloadedImage!)
                  
                        
                        let activityViewController = UIActivityViewController(activityItems: imagetoShare,applicationActivities: nil)
                        if let popoverController = activityViewController.popoverPresentationController {
                        popoverController.sourceView = self.view
                          popoverController.sourceRect = CGRect(x: self.view.bounds.midX,height: 0)
                          popoverController.permittedArrowDirections = []
                            
                      }
                              
                              // exclude some activity types from the list (optional)


                              // present the view controller
                              self.present(activityViewController,completion: nil)
                    

但仍然没有运气

这些更改之后,我的调试器日志将显示,

imagetoShare: [UIImage] = [UIImage]()

请帮助我解决此问题。 预先感谢!

解决方法

您创建了一堆UIActivityViewController来显示代码中的循环,因此仅显示第一个,因为跳过了下一个。 您应该先创建要共享的图像数组,然后再使用该数组显示控制器。

// Prepare array of images to share
var images = [UIImage]()
for i in 0...scan.pageCount-1 {
    ...
    images.append(reloadedImage!)
}
// Create and present single activity controller
let activityViewController = UIActivityViewController(activityItems: images,applicationActivities: nil)
...
self.present(activityViewController,animated: true,completion: nil)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...