gpt4 book ai didi

swift - 使用 PickerView 将卡片图片设置为其名称

转载 作者:行者123 更新时间:2023-11-30 10:39:30 26 4
gpt4 key购买 nike

我有一个 pickerView,我已对其进行编码,用于显示一副牌中所有 52 张牌的等级和花色。在此 pickerView 下,我有 UIImage,用于在 PickerView 中选择卡片时显示卡片的图像。

这对我来说是一个非常新的主题,我不太确定如何处理它。

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var selectedCard: UIImageView!
@IBOutlet weak var cardPicker: UIPickerView!

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

var test: String = "(generateDeckOfCards())"

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return theDeck.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return "\(theDeck[row].rank) of \(theDeck[row].suit)"
}

var cardPicked: String = "" //used for saving

override func viewDidLoad() {
super.viewDidLoad()
cardPicker.dataSource = self
cardPicker.delegate = self
selectedCard.image = UIImage(named: "spade1")
}
}

struct Card {
let rank: Rank
let suit: Suit

enum Rank: Int{
case two = 2
case three, four, five, six, seven, eight, nine, ten
case Jack, Queen, King, Ace

func rankDescription() -> String {
switch self {
case .Jack: return "Jack"
case .Queen: return "Queen"
case .King: return "King"
case .Ace: return "Ace"
default: return String(self.rawValue)
}
}
}
enum Suit: String {
case Diamond = "♦️"
case Heart = "♥️"
case Spade = "♠️"
case Club = "♣️"
}
}
func generateDeckOfCards() -> [Card] {
var myDeckOfCards: Array = [Card]()
let maxRank = Card.Rank.Ace.rawValue
let aSuit: Array = [Card.Suit.Club.rawValue,
Card.Suit.Diamond.rawValue, Card.Suit.Heart.rawValue, Card.Suit.Spade.rawValue]

for count in 2...maxRank {
for suit in aSuit{
let aRank = Card.Rank.init(rawValue: count)
let aSuit = Card.Suit.init(rawValue: suit)
let myCard = Card(rank: aRank!,suit: aSuit!)
myDeckOfCards.append(myCard)
}
}
return myDeckOfCards
}
var theDeck = generateDeckOfCards()

我的预期结果是将 selectedCard.image 设置为等于选择器 View 中当前选择的任何内容。

最佳答案

将您的 Card 结构更新为此(现在您可以获取图像名称):

struct Card {

let rank: Rank
let suit: Suit

enum Rank: Int {
case ace = 1, two, three, four, five, six, seven, eight, nine, ten
case jack, queen, king
}

enum Suit: String {
case diamond, heart, spade, club
}

var rankDescription: String {
switch rank {
case .ace:
return "Ace"
case .jack:
return "Jack"
case .queen:
return "Queen"
case .king:
return "King"
default:
return String(rank.rawValue)
}
}

var suitDescription: String {
switch suit {
case .diamond:
return "♦️"
case .heart:
return "♥️"
case .spade:
return "♠️"
case .club:
return "♣️"
}
}


// Image Name
var imageName: String {
return suit.rawValue + String(rank.rawValue)
}


}

let card = Card(rank: .ace, suit: .diamond)
print(card.imageName) // prints "diamond1"

然后在选取器 View 的委托(delegate) didSelectRow 方法中,您可以将 selectedCard.image 设置为 UIPickerView 中当前选择的任何内容:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

// Get card image
let image = UIImage(named: "\(theDeck[row].imageName)")

// Update image
selectedCard.image = image

}

关于swift - 使用 PickerView 将卡片图片设置为其名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com