如何从图像滑块获取图像的ID

问题描述 投票:-5回答:2

我的项目上有一个图像滑块。我想点击它时得到图像的ID。我做到了这一点。

为了获得id,我创建了一个动作按钮 -

    @IBAction func onTapGetBannerId(_ sender: Any) {
       //  var bannersArray = [BannersHome]() //banner array contain image and it's id
        for items in bannersArray {
            print(items.banner_id) 
        }
      // print(bannersArray[0].banner_id)
    }

在点击图像我得到所有的ID。不是我点击的那个图像的特定ID,我知道为什么我得到这个,但我想要特定的图像ID,我点了 -

enter image description here

这是我的其余代码 -

func setBannerImages(_ bannerArray: [BannersHome]) {

        totalFirstCount = bannerArray.count
        if totalFirstCount == 1 {
            // bannerImage.yy_imageURL = URL(string: bannerArray[0].banner_image)

            bannerImage.kf.setImage(with: URL(string: bannerArray[0].banner_image))
            print("banner id------------\(bannerArray[0].banner_id)")
        }
        else if !isFirstStarted && (totalFirstCount > 1) {
            isFirstStarted = true
            totalFirstCount = 0
            self.perform(#selector(self.setImage), with: bannerArray, afterDelay: 0.3)
        }
    }

 func setImage(_ thumbArray: [BannersHome]) {

        if currentFirst == thumbArray.count {
            currentFirst = 0
        }
        let transition = CATransition()
        transition.duration = 0.4
        transition.type = kCATransitionFade
        bannerImage.layer.add(transition, forKey: kCATransition)
        bannerImage.kf.setImage(with: URL(string: thumbArray[currentFirst].banner_image))
        // bannerImage.yy_imageURL = URL(string: thumbArray[currentFirst].banner_image)
        currentFirst += 1
        self.perform(#selector(self.setImage), with: thumbArray, afterDelay: 2.0)
    }

我的模特 -

class BannersHome: NSObject {

    var banner_image:String!
    var banner_id:String!

    init(BannersHome: NSDictionary) {

        self.banner_image = BannersHome["banner_image"] as? String
         self.banner_id = String(BannersHome["banner_id"] as! NSInteger)
    }
}

我想得到我拍摄的图像的ID。我怎么能做到这一点?谢谢。

ios swift
2个回答
0
投票

您可以使用视图的tag属性

设置标签

 bannerImage.tag = currentFirst

然后在onTapGetBannerId获取发件人的标签

let imageView = sender as! UIImageView

// Do what you have to with the index
let index = imageView.tag

0
投票

将onTapGetBannerId发件人类型更改为UITapGestureRecognizer,并获取tapped imageView及其图像。然后,您可以通过比较图像来获取选定的BannersHome对象。然后,您可以获取所选BannersHome对象的ID。

我猜你有结构

struct BannersHome {
    var id: String
    var image: UIImage
    var banner_image:String! {
        didSet {
            if let url = URL(string: banner_image), let data = try? Data(contentsOf: url), let image = UIImage(data: data) {
                self.image = image
            }
        }
    }
}

更改onTapGetBannerId方法如下

@IBAction func onTapGetBannerId(_ sender: UITapGestureRecognizer) {
    if let imgView = sender.view as? UIImageView, let image = imgView.image {
        if let selectedId = bannersArray.first(where: { $0.image.isEqual(image) })?.id {
            print(selectedId)
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.