My segues我试图弄清楚是否有一种方法可以将我选择的单元格中的图像传递到完全不同的 View Controller 中的新 UIImageView
。我不完全理解转场是如何工作的,经过几个小时的深思熟虑,我还没有完全找到解决方案。我已经能够在 tableview
中显示我的图像,但我想将所选图像发送到 UIImageView
以获得更大的图片 View 。我目前有 2 个 VC 来做这件事。第一个称为 TableView
import UIKit
class TableView: UITableViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBAction func toImage(_ sender: Any) {
performSegue(withIdentifier: "ImageView", sender: self)
}
// Properties
var imagesDirectoryPath:String!
var images:[UIImage]!
var titles:[String]!
@IBAction func choosePhoto(_ sender: AnyObject) {
let imagePicker = UIImagePickerController()
if UIImagePickerController.isSourceTypeAvailable(.camera){
imagePicker.sourceType = .photoLibrary
print("Library selected")
}else{
print("No cam here!")
}
present(imagePicker, animated: true, completion: nil)
imagePicker.delegate = self
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
self.tableView!.register(UITableViewCell.self, forCellReuseIdentifier:"CellID")
images = []
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
// Get the Document directory path
let documentDirectorPath:String = paths[0]
// Create a new path for the new images folder
imagesDirectoryPath = documentDirectorPath + "/ImagePicker"
var objcBool:ObjCBool = true
let isExist = FileManager.default.fileExists(atPath: imagesDirectoryPath, isDirectory: &objcBool)
// If the folder with the given path doesn't exist already, create it
if isExist == false{
do{
try FileManager.default.createDirectory(atPath: imagesDirectoryPath, withIntermediateDirectories: true, attributes: nil)
}catch{
print("Something went wrong while creating a new folder")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func refreshTable(){
do{
images.removeAll()
titles = try FileManager.default.contentsOfDirectory(atPath: imagesDirectoryPath)
for image in titles{
let data = FileManager.default.contents(atPath: imagesDirectoryPath + "/\(image)")
let image = UIImage(data: data!)
images.append(image!)
}
self.tableView.reloadData()
}catch{
print("Error")
}
}
//MARK: UIImagePickerControllerDelegate Protocol
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
// Save image to Document directory
var imagePath = Date().description
imagePath = imagePath.replacingOccurrences(of: " ", with: "")
imagePath = imagesDirectoryPath + "/\(imagePath).png" //this would change depending on the name of the image
let data = UIImagePNGRepresentation(image)
_ = FileManager.default.createFile(atPath: imagePath, contents: data, attributes: nil)
dismiss(animated: true) { () -> Void in
self.refreshTable()
}
}
//MARK: UITableView DataSource
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell:UITableViewCell! = tableView.dequeueReusableCell(withIdentifier: "CellID")
cell?.imageView?.image = images[indexPath.row]
cell.textLabel?.text = titles[indexPath.row]
return cell
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return images.count
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "ImageView", sender: images[indexPath.row])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var secondVC : ImageView = segue.destination as! ImageView
//secondVC.fullView = imagesDirectoryPath[IndexPath.row]
}
}
这是我的 ImageView
,我希望单元格中的图像出现在其中。
import UIKit
class ImageView:ViewController{
@IBOutlet var fullView: UIImageView!
var selectedImage = UIImage()
override func viewDidLoad() {
super.viewDidLoad()
self.fullView.image = self.selectedImage //Assign selected Image here
}
//segue via a button
@IBAction func toTable(_ sender: Any) {
performSegue(withIdentifier: "TableView", sender: self)
}
}
有什么方法可以将现有图像传递到另一个 VC 中的 UIImageView
吗?我查遍了谷歌,但似乎无法弄清楚。
谢谢!
最佳答案
关于swift - 如何将图像从 UITableViewCell 传递到 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815895/