我有两个UIButton
,如果我点击button1
label1
的值为250,如果我再次点击button1
label1
的值应该为0.我的button2
和label2
应用了相同的逻辑。我想将label1
和label2
添加到label3
中。 。我的代码是:
func PickUpCarCost() {
if (!isclick){
imgCheck.image = UIImage(named: "check.png")
isclick=true
//Pickup fare conver into integer
let PickUp = String(self.PickUpPrice)
PickUpFare.text = PickUp
self.pickCost = Int( PickUpFare.text!)
self.PAyAmount = ((self.PayFareWithSecurity)+(self.pickCost))
print("PaybleAmount: \(self.PAyAmount)")
self.AmountPay1 = ((self.PAyAmount)+(self.DeliverCost))
PaybleAmount.text=String(self.AmountPay1!)
}
else
{
imgCheck.image = UIImage(named: "uncheck.png")
PickUpFare.text = "0"
self.PickUpElse=Int(PickUpFare.text!)
print("PickUpElse: \(self.PickUpElse)")
self.PAyAmount = (self.PayFareWithSecurity)+(self.PickUpElse)
PaybleAmount.text=String(self.PAyAmount!)
isclick=false
}
}
func CarDeliverCost() {
if (!isclick){
imgUnCheck.image = UIImage(named: "check.png")
isclick=true
let DeliverPrice = String(self.deliveryPrice)
DeliverFare.text = DeliverPrice
self.DeliverCost = Int(DeliverFare.text!)
self.PAyAmount = ((self.PayFareWithSecurity)+(self.DeliverCost))
print("PaybleAmount: \(self.PAyAmount)")
PaybleAmount.text=String(self.PAyAmount!)
}
else
{
imgUnCheck.image = UIImage(named: "uncheck.png")
let deliveryelse = String(0)
DeliverFare.text = deliveryelse
self.deliver = Int(DeliverFare.text!)
PaybleAmount.text=String(self.PAyAmount!)
isclick=false
}
}
答案 0 :(得分:0)
您面临的第一个问题是您在两种不同的情况下使用相同的布尔值isClick
。您的逻辑是用户可以决定单击两个按钮或单个按钮。因此,如果我单击第一个按钮,那么您的标志将打开,因为第二个按钮也使用相同的布尔值,然后您将自动取消检查行为。
因此,您应该使用两个不同的布尔值,例如
hasPressOntoFirstButton
和hasPressOntoSecondButton
,其中两者都在开头设置为false
,并且每个变量都用于各自的场景中。
您提到要将label1
添加到label2
,更简单的方法是添加设置这些标签的变量。即
let label1 = UILabel()
let label2 = UILabel()
let label3 = UILabel()
let data1: Double = 83.0
let data2: Double = 82.0
var total: Double { // have a computed variable to adds automatically
return data1 + data2
}
label1.text = "\(data1)"
label2.text = "\(data2)"
label3.text = "\(data1 + data2)" // or "\(total)"
说明:
(1)您的命名约定确实具有误导性,您应该将UI object
命名与数据分开。即你可以deliveryFareLabel.text
代替DeliverFare.text
(2)避免使用!
,使用nil coalescing ??
或if let
或guard statements