2017-02-07 60 views
0

我正在使用Swift 3,Xcode 8.2。我有一個自定義的表格視圖單元格(稱爲MyCustomCell),其中有一個圖像視圖和一個按鈕,點擊後可以打開相機。用戶可以添加更多這些單元格。我希望用戶能夠點擊一個按鈕,拍攝一張照片,並將其顯示在該按鈕的適當圖像視圖中。iOS - 如何將選定的圖像放置到適當的圖像視圖(imagePickerController)

我的問題是,現在它總是出現在第一個圖像視圖,但不是其他人。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    if let pickedImage : UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     let scancell = tableView.cellForRow(at: NSIndexPath(row: 0, section: 0) as IndexPath) as! MyCustomCell // it's this line that is wrong 
     scancell.imgView.contentMode = .scaleAspectFit 
     scancell.imgView.image = pickedImage 
     scancell.cameraButton.isHidden = true 
    }; 

    self.dismiss(animated: true, completion: nil) 
} 

我很難理解如何調用imagePickerController並且如果我可以傳入用戶單擊的自定義單元格。

我想要做這樣的事情:

tableView.cellForRow(at: tableView.indexPath(for: cell)) 

其中cell被傳入的說法莫名其妙,但我不知道,如果imagePickerController的簽名可以被修改,如果是這樣,究竟怎麼了叫什麼名字?

任何幫助將不勝感激。謝謝!

回答

1

向cellForRow方法中的按鈕添加標籤並使用該標籤獲取單元格。

var Celltag = 0 

    func tableView_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell((withIdentifier: "")) as! MyCustomCell 
    cell.customButton.tag = indexPath.row 
    cell.customButton.addTarget(self, action: #selector(ButtonClickMethod), for: .touchUpInside) 
    return cell 
    } 


    func ButtonClickMethod (sender:UIButton) { 
    Celltag = sender.tag 
    ........ 
    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     if let pickedImage : UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      let scancell = tableView.cellForRow(at: NSIndexPath(row: Celltag, section: 0) as IndexPath) as! MyCustomCell 
      scancell.imgView.contentMode = .scaleAspectFit 
      scancell.imgView.image = pickedImage 
      scancell.cameraButton.isHidden = true 
     }; 

     self.dismiss(animated: true, completion: nil) 
    } 

希望這會有所幫助。

+0

我沒有這樣做,但這個答案幫助我走上了正確的軌道。謝謝! – noblerare

0

在你的MyCustomCell類中,你應該有一個imagePicker函數,用戶可以在其中選擇一張照片並返回用戶選擇的照片。然後,在tableForController數據源方法中使用cellForRow(也傳遞單元格的indexPath您應該有類似的東西

func tableView_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(...) as! MyCustomCell 
    let image = cell.pickImage 
    cell.image = image 

    return cell 
} 
相關問題