【问题标题】:UIImageView Array iOS13UIImageView 数组 iOS13
【发布时间】:2022-06-10 19:13:08
【问题描述】:

我正在尝试学习 Swift,但在这里遇到了一个问题。

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var diceImageView1: UIImageView!

@IBOutlet weak var diceImageView2: UIImageView!

var leftDiceNumber=1

override func viewDidLoad() {
    super.viewDidLoad()
    
    // Do any additional setup after loading the view.

    diceImageView1.image = UIImage(imageLiteralResourceName: "DiceSix")

    // change transparency with diceImageView1.alpha=0.7

        }

@IBAction func rollButtonPressed(_ sender: UIButton) {
    print("button pressed")
    diceImageView1 = [ UIImageView(imageLiteralResourceName: "DiceOne"),UIImageView(imageLiteralResourceName: "DiceTwo"),UIImageView(imageLiteralResourceName: "DiceThree"),UIImageView(imageLiteralResourceName: "DiceFour"),UIImageView(imageLiteralResourceName: "DiceFive"),UIImageView(imageLiteralResourceName: "DiceSix")],[leftDiceNumber]
    
    leftDiceNumber=leftDiceNumber+1
  
}

}

但我得到的只是 IBAction 上的错误消息:

1.传递给不带参数的调用的参数

2.无法将类型“[UIImageView]”的值赋给类型“UIImageView”

3.一行中的连续语句必须用';'分隔

4.预期表达式

UIImageView 和 UIImage 有什么区别?什么时候应该使用它们?

提前非常感谢!

【问题讨论】:

  • A UIImageView 显示 UIImage。您的代码正在尝试将 UIImageViews 数组分配给 UIImageView 变量。你到底想做什么?
  • 我有 6 张骰子图片。一旦我按下按钮,它应该从骰子 1 变为 2,从 2 变为 3,等等 (n+1)

标签: ios swift xcode uikit


【解决方案1】:

您想更改.image 属性以更改图像。

要“循环”骰子,您可以这样做:

class DiceViewController: UIViewController {
    
    @IBOutlet weak var diceImageView1: UIImageView!
    @IBOutlet weak var diceImageView2: UIImageView!

    let diceNames: [String] = [
        "DiceOne", "DiceTwo", "DiceThree", "DiceFour", "DiceFive", "DiceSix"
    ]
    
    var leftDiceNumber = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        diceImageView1.image = UIImage(named: diceNames[leftDiceNumber % 6])
    }
    
    @IBAction func rollButtonPressed(_ sender: UIButton) {
        print("button pressed")

        // increment the index
        leftDiceNumber += 1
        
        // udpate the image view
        diceImageView1.image = UIImage(named: diceNames[leftDiceNumber % 6])

    }
    
}

我猜你的目标是“随机掷”骰子,所以看看这个略有不同的课程:

class DiceViewController: UIViewController {
    
    @IBOutlet weak var diceImageView1: UIImageView!
    @IBOutlet weak var diceImageView2: UIImageView!
    
    let diceNames: [String] = [
        "DiceOne", "DiceTwo", "DiceThree", "DiceFour", "DiceFive", "DiceSix"
    ]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // start with both dice at One
        diceImageView1.image = UIImage(named: diceNames[0])
        diceImageView2.image = UIImage(named: diceNames[0])

    }
    
    @IBAction func rollButtonPressed(_ sender: UIButton) {
        print("button pressed")
        
        // arrays are Zero-based, so get a random Int
        //  from 0 to 5
        //let l = Int.random(in: 0...5)
        //let r = Int.random(in: 0...5)
        //diceImageView1.image = UIImage(named: diceNames[l])
        //diceImageView2.image = UIImage(named: diceNames[r])

        // more "modern Swifty" method
        if let nm = diceNames.randomElement() {
            diceImageView1.image = UIImage(named: nm)
        }
        if let nm = diceNames.randomElement() {
            diceImageView2.image = UIImage(named: nm)
        }

    }
    
}

【讨论】:

  • 为什么不简单地diceNames.randomElement()
  • @LeoDabus - 哎呀......清楚的证据表明我不是 Swift 开发人员:(
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2021-08-28
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多