【问题标题】:Swift 3 "didFinishPickingMediaWithInfo" for image inside tableview cell表格视图单元格内的图像的 Swift 3“didFinishPickingMediaWithInfo”
【发布时间】:2018-01-15 11:36:35
【问题描述】:

我在表格视图中有一个注册表单,用户可以在该注册表单中选择个人资料图片。

如何使用所选图像更新 tableview 单元格中的图像?

如何允许该单元格。在tableview之外的“func imagePickerController()”里面?

Click for code

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

if let orginalImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

cell.profileImage.image = orginalImage

}

else { print ("error") }

picker.dismiss(animated: true, completion: nil)

}

【问题讨论】:

  • 错误似乎更多关于什么是单元格。
  • 将原始图像设为全局并将此图像传递到 tabview 单元格中。你不能在那里制作细胞
  • 您需要使用 Tableview 代表您现在无法访问单元格

标签: ios swift uitableview swift3


【解决方案1】:
var orginalImage

 if  orginalImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

tableView.reloadData()

}

// 现在你可以在 cellForRowAtIndexPath 中使用这张图片了

cell.profileImage.image = orginalImage

【讨论】:

    【解决方案2】:

    在您的 AppDelegate Like 中制作图像变量

    var globalImage = UIImage()
    

    以及您获得价值的地方将其发送给 AppDelegate。使 AppDelgate 对象如下所示

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    

    将值传递给应用委托变量

    self.appDelegate.globalImage = "your image here"
    

    并在您想要获取的任何地方获取您的值,如下所示

    在您的情况下,它在 TableViewCell 中,因此在 cellforRowAt 下

    cell.profileImage.image = appDelegate.globalImage 
    

    传递的值

    【讨论】:

    • 使用 app delegate 来存储只在一个 viewController 中使用的图像是不必要的,而且是矫枉过正。如@Latif kumar 的评论中所述,OP 最好在上述 viewController 中创建一个全局变量
    【解决方案3】:

    只需在 didFinishPickingMediaWithInfo 方法中创建您的单元格文件对象。

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
        {
    
    
            //cell file object
            let cell = tblView.cellForRow(at: IndexPath.init(row: 0, section: 0)) as! ProfileTableViewCell //cell file object
    
            let imgTemp = info[UIImagePickerControllerOriginalImage] as? UIImage// get image from imagePickerViewController
            cell.imgViewProfile.image = imgTemp
            cell.imgViewProfile.layer.cornerRadius = cell.imgViewProfile.frame.size.width/2 // make image circle
            cell.imgViewProfile.layer.masksToBounds = true
            appDelegate.window?.rootViewController?.dismiss(animated: true, completion: nil)
        }
    

    【讨论】:

    • 谢谢。完美运行。
    • 我做了,但我的声誉低于 15,所以它说它不会公开显示。
    • 遇到了类似的问题,经过一些工作,这个答案完全解决了我的问题。谢谢@Jaydip
    【解决方案4】:

    在 didfinishPickingMediaWithInfo 内部重用您需要添加图像的单元格,并将拾取的图像简单地分配给单元格内的 imageView。

    简单!!

    【讨论】:

      【解决方案5】:

      你必须只是

      1. 将局部变量添加到您的控制器。
      2. 设置为来自图像选择器的 var 图像
      3. 重新加载单元格/表格

      例如

      class ImageViewController: UIImagePickerControllerDelegate, UITableViewDelegate, UITableViewDataSource {
      
            var image: UIImage?
            weak var table: UITableView!
      
            func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
      
                  if let orginalImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
                  self.image = orginalImage
            } else { print ("error") }
                  picker.dismiss(animated: true, completion: nil)
            }
      
            override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
      
                  let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)
      
                  return cell
            }
      
            override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
                  let _cell = cell
      
                  _cell.imageView.image = self.image
            }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多