繁体   English   中英

快速将var从一个if语句传递给另一个

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM