Как разделить изображение, загруженное из хранилища Firebase, между разными представлениями? - PullRequest
0 голосов
/ 28 февраля 2019

Это код, который я использую для извлечения изображения из хранилища.Это работает как шарм, но я не хочу перезагружать его снова на разных видах.

func retreiveImagesFromFireBase(downloadUrl:String,imageHolder:UIImageView){
    if downloadUrl != "" {
        let storageRef = Storage.storage().reference(forURL: downloadUrl)
        // Download the data, assuming a max size of 1MB (you can change this as necessary)
        storageRef.getData(maxSize: 5*1024*1024) { (data, error) in
            if error == nil {
                if let pic = UIImage(data: data!) {
                    imageHolder.image = pic
                }
            } else {
                print(error)
            }
        }
    }
}

Как мне справиться с этим?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Просто объявите UIImage глобально в вашем классе и в вашей функции, где вы устанавливаете imageHolder, назначьте загруженное изображение глобальному изображению и используйте его где угодно.

UIImage image;

func retreiveImagesFromFireBase(downloadUrl:String,imageHolder:UIImageView){
            if downloadUrl != ""{
                let storageRef = Storage.storage().reference(forURL: downloadUrl)
                // Download the data, assuming a max size of 1MB (you can change this as necessary)
                storageRef.getData(maxSize: 5*1024*1024) { (data, error) in
                    if error == nil{
                        if let pic = UIImage(data: data!){
                            imageHolder.image = pic
                            image = pic // use it on other views 
                        }
                    }else{
                        print(error)
                    }
                }
            }
        }
0 голосов
/ 28 февраля 2019

Если у вас есть только одно или два изображения, просто сохраните их в userdefault, а затем вы можете получить доступ к любому viewController, сохранить image как data в userdefault всякий раз, когда вы хотите использовать просто преобразование данных в изображение ииспользуйте его, см. следующий код для преобразования данных в изображение

let image = UIImage(data: imageData)
0 голосов
/ 28 февраля 2019

Вы можете сделать

class Service { 
   static let shared = Service()  
   var image1:UIImage?
   var image2:UIImage?
   let imageLink = "//////" // or with SDWebImage
}

if let pic = UIImage(data: data!){
    Service.shared.image = pic
}

Или использовать SDWebImage и поделиться ссылкой, вы также можете создать глобальную переменную типа

var image:UIImage? 

, но это не рекомендуетсяпоскольку в нем нет группировки, позволяющей разработчику знать, что он является локальным источником / экземпляром / глобальным, это сбивает с толку, в отличие от синглтона

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...