将数组中的UI图像附加到幻灯片swift

时间:2016-07-12 19:56:43

标签: ios swift swift2 uiimage

我正在尝试使用此库进行幻灯片放映

https://github.com/zvonicek/ImageSlideshow

所以我正在进行查询,我带了一些图片,我将它们附加到这里

var sliderArray = [UIImage]()
var testimg:UIImage!

let idaki = recipeObj.objectId
let pointer2 = PFObject(outDataWithClassName:"Recipes", objectId: idaki!)
let galquery = PFQuery(className:"sliderRecipes")
galquery.whereKey("recipe", equalTo: pointer2)
galquery.findObjectsInBackgroundWithBlock {
    (objects: [PFObject]?, error: NSError?) -> Void in


    if error == nil {
        // The find succeeded.
        print("Successfully retrieved \(objects!.count) scores.")
        // Do something with the found objects
        if let objects = objects {
            for object in objects {
                count += 1

                let glrimg = object["sliderImage"] as! PFFile
                glrimg.getDataInBackgroundWithBlock {
                    (imageData3: NSData?, error: NSError?) -> Void in
                    if error == nil {
                        if let imageData2 = imageData3 {
                            self.testimg = UIImage(data:imageData2)
                            print(self.testimg)
                            print(self.sliderArray)
                            self.sliderArray.append(UIImage(data:imageData2)!)




                        }
                        if count == objects.count { print(self.sliderArray) }
                    }
                }



                // print("test")
                // print(self.sliderPinakas)
            }
        }
    } else {
        // Log details of the failure
        print("Error: \(error!) \(error!.userInfo)")
}

毕竟这不是我有一个带图像的阵列。在上面的打印中,它首先显示empty数组,然后显示UI图像的打印件,我想将它们显示为滑块

slideshow.setImageInputs([ImageSource(image: UIImage(named: "myImage"))!, ImageSource(image: UIImage(named: "myImage2"))!])

但不是必须使用名称,UIImage(named: "myImage"))!我想这样做

self.slider.setImageInputs([ImageSource(image: self.testimg)]) 

对于阵列的所有图像,导致上面的行只显示一个。 有人可以提供帮助吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

您已传递给self.slider.setImageInputs所有对象的数组ImageSource [ImageSource(image: self.testimg1), ImageSource(image: self.testimg2), ...]等,而不仅仅是一个对象[ImageSource(image:self.testimg)]。

如果添加如下图像:
self.slider.setImageInputs([ImageSource(image: self.testimg)])
self.slider.setImageInputs([ImageSource(image: self.testimg2)])
你只需用第二张图片替换第一张图片。

创建新数组,枚举来自sliderArray的所有图像,并将它们附加到数组ImageSource(image:self.testimg1)对象。

另外请记住,你必须从阻止glrimg.getDataInBackgroundWithBlock中调用它!

for之前添加

var count = 0

并添加内部块

count +=1
if count == objects.count {
    print(self.sliderArray)
}.

当所有对象完成加载时它们将打印数组(它们可以以混乱的顺序加载)。