ios - 每次按下按钮时,如何从标签“26”中减去 1?(斯威夫特初学者)
问题描述
斯威夫特初学者
每次按下“交易”按钮时,我想从值为“26”的标签中减去 1。我将其转换为 Int 吗?以及如何添加计算?
我编码了cardsAmount.text =“25”,它有效。但是每次按下按钮时都需要减去 1 并且不分配硬编码值。
另外,将来我想增加这个数字。
谢谢!
class ViewController: UIViewController {
@IBOutlet weak var leftPile: UIImageView!
@IBOutlet weak var rightPile: UIImageView!
@IBOutlet weak var cardsAmount: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func deal(_ sender: Any) {
let shuffled = (2...53).shuffled()
let leftNumber = shuffled[0]
let rightNumber = shuffled[1]
//cardsAmount.text = "25"
leftPile.image = UIImage(named: "c\(leftNumber)")
rightPile.image = UIImage(named: "c\(rightNumber)")
}
.
.
.
}
解决方案
您可以使用属性观察器。
var number: Int = 26 {
didSet {
if number > 0 {
self.cardsAmount.text = "\(number)"
}
}
}
@IBAction func deal(_ sender: Any) {
let shuffled = (2...53).shuffled()
let leftNumber = shuffled[0]
let rightNumber = shuffled[1]
number -= 1 // whenever number value changes, didSet (property observer) will be called
leftPile.image = UIImage(named: "c\(leftNumber)")
rightPile.image = UIImage(named: "c\(rightNumber)")
}
推荐阅读
- angular5 - ./node_modules/angular-material-fileupload/matFileUpload.esm.js 中的错误
- c# - WebAPI,[FromBody] 字符串,应用程序/json,错误 415(不支持的媒体类型)
- android - 如果没有可用的翻译,则禁用 RTL
- google-cloud-platform - 如何使用 stackdriver 为 dataproc 集群创建空闲/正常运行时间指标
- oauth-2.0 - Microsoft Graph API 的访问令牌立即过期
- mysql - MySQL转储表,列为CSV文件?
- javascript - 带有 Angular 5 node.js 的 Ionic 3 在按钮单击时播放音频
- r - Cumsum 与 R 中的标准
- php - 在本地主机上为客户端部署完成的 laravel 项目 - laravel
- mysql - Mysql 授予权限得到错误 ERROR 1133 (42000): Can't find any matching row in the user table