我有一个带有单元格的 tableView。在这个单元格中,我有一个 imageView 和一个覆盖它的按钮。该按钮有一个 IBAction。当点击时,按钮应该召唤 imagePicker。 IBAction 代码位于单元格 subview 中。

@IBAction func MyStatusImageButtonAction(sender: AnyObject) {
    // Select Image
    let imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    imagePicker.allowsEditing = false
    self.presentViewController(imagePicker, animated: true, completion: nil)

由于这一行,我收到错误消息。
self.presentViewController(imagePicker, animated: true, completion: nil)

错误提示“类型“myCell”的值没有成员“presentViewController”。

我是否应该在承载单元格的 viewController 中加载 imagePicker,然后以某种方式将其传输到单元格?我应该使用不同的代码在单元格中加载 imagePicker 吗?我在这一切都错了吗?

为清楚起见,我的目标是让用户加载此 TableViewController,并且能够仅将图像分配给此单元格中的 imageView。

谢谢你。

最佳答案

编写一个协议(protocol),您的 TableViewController 将为您显示它。

protocol ImagePickerDelegate {

    func pickImage()
}

在你的牢房里
var delegate : ImagePickerDelegate?

@IBAction func pickImage(sender: AnyObject) {

    delegate?.pickImage()
}

在你的 tableViewController
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("displayImage", forIndexPath: indexPath) as! ImageTableViewCell

    cell.delegate = self

    return cell
}

func pickImage() {

    let imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    imagePicker.allowsEditing = false
    self.presentViewController(imagePicker, animated: true, completion: nil)
}

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {

    dismissViewControllerAnimated(true, completion: nil)

    var cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0)) as! ImageTableViewCell
    cell.displayImageView.image = image
}

希望这有帮助。

关于ios - 如何在 tableViewCell 中运行 imagePicker,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34101524/

10-09 02:08