代码之家  ›  专栏  ›  技术社区  ›  adjash

在单击按钮时修改生成的图像视图的图像

  •  0
  • adjash  · 技术社区  · 6 年前

    我正在创建一个测试应用程序,在更改在for循环中生成的特定imageview的显示图像时遇到问题。

    以下代码负责根据特定测试中的问题数量生成图像视图。它被称为 viewDidLoad() 方法:

    var imageView = UIImageView()
    
    func addProgressImages(to view: UIView, count: Int){
        let screenSize = UIScreen.main.bounds.size
    
        for i in 0..<count {
            let spacing: CGFloat = 2
            let tag = i + 888
            let width: CGFloat = screenSize.width/CGFloat(count)
            let height: CGFloat = width
            if let view = view.viewWithTag(tag){
                view.removeFromSuperview()
            }
            let x = spacing + CGFloat(i) * width
            imageView = UIImageView(frame: CGRect(x: x, y: 100, width: width - spacing, height: height))
            imageView.image = UIImage(named: "question_progress_empty")
            imageView.tag = tag
            imageView.contentMode = .scaleAspectFit
            view.addSubview(imageView)
            //print("imageviews displaying")
        }
    }
    

    当用户用if语句选择该问题的答案时,我尝试将一些图像更改为另一个图像:

        func changeImage() {
        if (optA != questionAns){
        imageView.image = UIImage(named: "wrong_answer")
            print("opta")
        }else if(optB == questionAns){
            imageView.image = UIImage(named: "wrong_answer")
            print("optb")
        }else if(optC == questionAns){
            print("optc")
            imageView.image = UIImage(named: "wrong_answer")
        }else{
            print("if statement not initialised")
        }
    }
    

    https://imgur.com/a/zwJ4EVn -这是上述代码的输出 目前,当用户单击按钮时,只会更改最后一个图像。

    我需要修改与该特定问题相关的imageview的帮助,例如,如果问题2被回答,则只有该imageview会更改,而其余的保持不变。

    希望这个解释是有意义的,任何意见都能被理解, 谢谢。

    2 回复  |  直到 6 年前
        1
  •  0
  •   vivekDas    6 年前

    看你没做错什么事。

    1. 你已经 UIImageView 作为实例变量,如下所示 创建所有图像,并将引用保存到最后一个 imageView .

      var imageView=UIImageView()

    2. 使 var imageView 作为局部变量 func changeImage() 找到合适的 图像视图 然后使用其标记值 试着改变它的形象。

    如果有任何疑问,请发表评论。

    如何获得 图像视图 回来 changeImage() 检查下面的代码。

    let tag = 888 + (questionNumber - 1)
    if let imageView = view.viewWithTag(tag) as? UIImageView {
       // Change imageView's image here
    }
    
        2
  •  0
  •   Rob    6 年前

    您可能需要创建一个图像视图数组:

    var imageViews = [UIImageView]()

    并将uiimagesview添加到循环中的数组中:

    for i in 0..<count {
        var imageView = UIImageView()
        // additional setup...
        imageViews.append(imageView)
    }
    

    然后,您可以稍后迭代数组并更改图像:

    for imageView in imageViews {
        imageView.image = UIImage(named: "wrong_answer")
        // etc.
    }