[英]Passing a var from one if statement to another in swift
我正在尝试将字符串从一个if语句传递给另一个。 现在,我已经在两个if语句之外声明了var,只是带有占位符字符串。
应该发生的事情是,轻按一次按钮,它会显示按钮的标题(请考虑计算器上的按钮/数字)。 当第二次点击该按钮时,它应该同时显示第一个按钮的标题和第二个按钮的标题,以便创建一个两位数的数字。
实际发生的是它正确显示了第一个按钮,但是一旦按下第二个按钮,它将显示第一个按钮作为占位符字符串。
代码如下。 任何帮助将是巨大的!
应用程序+代码的屏幕截图。它应显示为新卡旁边的“ 21”,而不是“位置1” 。http://imgur.com/vMmciyh
@IBAction func oneButtonPressed(sender: AnyObject)
{
timesButtonPressed += 1
var buttonTitle1:String! = ("Place ")
var buttonTitle2:String! = ("holder")
if timesButtonPressed == 1
{
buttonTitle1 = sender.titleLabel!?.text
self.answerTyped.text = String (buttonTitle1)
}
if timesButtonPressed == 2
{
buttonTitle2 = sender.titleLabel!?.text
self.answerTyped.text = String (stringInterpolation: buttonTitle1, buttonTitle2)
}
}
完整代码:
导入UIKit
类PlayViewController:UIViewController {
@IBOutlet weak var newCardButton: UIButton!
@IBOutlet weak var labelTest: UILabel!
@IBOutlet weak var oneButton: UIButton!
@IBOutlet weak var answerTyped: UILabel!
@IBOutlet weak var enterButton: UIButton!
var mathProblem = String ("Answer Typed")
var firstRandomNumber = 0
var secondRandomNumber = 0
var buttonName = String ("button name")
var timesButtonPressed = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func newCardButtonPressed(sender: AnyObject)
{
firstRandomNumber = Int(arc4random_uniform(11))
secondRandomNumber = Int(arc4random_uniform(11))
mathProblem = String(format:"%i x %i", firstRandomNumber, secondRandomNumber)
self.labelTest.text = String (mathProblem)
}
@IBAction func oneButtonPressed(sender: AnyObject)
{
timesButtonPressed += 1
var buttonTitle1:String! = ("Place ")
var buttonTitle2:String! = ("holder")
if timesButtonPressed == 1
{
buttonTitle1 = sender.titleLabel!?.text
self.answerTyped.text = buttonTitle1
}
if timesButtonPressed == 2
{
buttonTitle2 = sender.titleLabel!?.text
self.answerTyped.text = buttonTitle1 + buttonTitle2
}
}
问题是,当您第二次按下按钮时,如果没有从代码中获取title1的值,而不是按钮1的实际值,那么您再执行timesButtonPressed == 1,就永远不会执行,并且您的timesButtonPressed == 2。
var timesButtonPressed : NSInteger = 0
var displayString : String = "0"
@IBAction func oneButtonPressed(sender: AnyObject)
{
timesButtonPressed += 1
let buttonTitle:String! = sender.titleLabel!?.text
if timesButtonPressed == 1
{
displayString = buttonTitle
} else {
displayString += buttonTitle
}
self.answerTyped.text = displayString
}
timesButtonPressed var需要根据需要使用(或在timesButtonPressed = 0时清除显示字符串)
编辑:
您需要在IBAction函数之外定义两个变量。 将以下两个变量放在viewDidLoad()中
var buttonTitle1:String! = ("Place ")
var buttonTitle2:String! = ("holder")
您可以通过重载“ +”来替换添加两个字符串:
var str1: String = "Hello"
var str2: String = "World"
var str3: String = str1 + str2
同样,您可以在函数中执行以下操作:
self.answerTyped.text = buttonTitle1 + buttonTitle2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.