Как сохранить выбранное изображение из фотогалереи, чтобы показать любой контроллер представления в Swift - PullRequest
0 голосов
/ 13 октября 2019

Я работаю над своим приложением, и я застрял в одной точке. Существует один UIIMAGEVIEW и одна кнопка ЗАГРУЗИТЬ. Поэтому, когда пользователь нажимает кнопку UPLOAD, он попадает в фотогалерею, чтобы выбрать изображение после выбора изображения. Я показываю это изображение в UIIMAGEVIEW. Итак, мой вопрос: - после показа изображения на UIIMAGEVIEW я хочу сохранить это изображение в приложении, чтобы показать это же изображение на другом View Controller.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

В этом случае вы можете попробовать этот фрагмент кода:

func saveImgToDocumentDirectory(image: UIImage ) {
    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let fileName = "image.png" // image name for identify particular image 
    let fileURL = documentsDirectory.appendingPathComponent(fileName)
    if let data = UIImageJPEGRepresentation(image, 1.0),!FileManager.default.fileExists(atPath: fileURL.path){
        do {
            try data.write(to: fileURL)
            print("file saved")
        } catch {
            print("error saving file:", error)
        }
    }
}


func loadImgFromDocumentDirectory(nameOfImage : String) -> UIImage {
    let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
    let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
    let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
    if let dirPath = paths.first{
        let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(nameOfImage)
        let image    = UIImage(contentsOfFile: imageURL.path)
        return image!
    }
    return UIImage.init(named: "default.png")!
}

Имя изображения является уникальным идентификатором изображения, при сохранении вам необходимо указать имя изображения «imageName», поэтому оно будетлегко получить это конкретное изображение, используя то же имя.

0 голосов
/ 13 октября 2019

Вы можете поместить изображение в глобальную переменную. Глобальная переменная может использоваться во всех приложениях. :

var imageSelected:UIImage? // Value will be nil if no image has been set

class ViewController1 {
    // Puts your image inside a global variable
    image = yourImage
}

class ViewController2 {
    // Uses the image that was defined inside the global variable
    @IBOutlet weak var imageView: UIView!
    imageView.image = imageSelected
}
...