如何不在标签中显示0?

时间:2017-08-18 22:05:27

标签: ios swift

我有一些按钮可以在按下时在标签上打印一些文字。我在文本前面还有一个计数器,用于显示按下相应按钮的次数。但是如果没有按下某些按钮,它会在标签中显示0。是否可以将int的初始值转换为空格? 我尝试过这样的事情:

var addCount:int = 0

var blankSpace = ""

if addCount == 0 {
addcount = blankSpace
}
else {
....
}

我也尝试过:

if addCount == 0 {
addCount = String (blankSpace)
}
else {
}

我尝试过:

if addCount == 0 {
addCount = String ("")
}

我可能认为这一切都错了,我很感激这方面的帮助 *
*
*

编辑:我认为swift中有一些神奇的技巧让0消失,所以当我问我的问题时,我采取了一些快捷方式。以下是整个设置:
我在View Controller 1中有四个按钮可以打印一些文本并将1添加到计数器。数据基于Swift文件 allSum 显示文本和计数器的标签位于View Controller 2中。

allSum:

import UIKit


class allSum: NSObject {
    var btn1Pressed:String = ""
    var addToBtn1:Int = 0
    var btn2Pressed:String = ""
    var addToBtn2:Int = 0
    var btn3Pressed:String = ""
    var addToBtn3:Int = 0
    var btn4Pressed:String = ""
    var addToBtn4:Int = 0

      func printToLabel() -> String{ //return a string with the current status
        return ("\(addToBtn1) \(btn1Pressed + "")") + ("\(addToBtn2) \(btn2Pressed + "")") + ("\(addToBtn3) \(btn3Pressed + "")") + ("\(addToBtn4) \(btn4Pressed + "")")

        }    

查看控制器1

var total = allSum

var button1 = "Button 1 Pressed\n"    
var button2 = "Button 2 Pressed\n"    
var button3 = "Button 3 Pressed\n"    
var button4 = "Button 4 Pressed\n"     

@IBAction func no1(_ sender: UIButton) {
    total.btn1Pressed = button1  
    toal.addToBtn1 += 1 
    }

@IBAction func no2(_ sender: UIButton) {
     total.btn2Pressed = button2   
     toal.addToBtn2 += 1 
     }    

@IBAction func no3(_ sender: UIButton) {
     total.btn3Pressed = button3  
     toal.addToBtn3 += 1 
     }    

@IBAction func no4(_ sender: UIButton) {
     total.btn4Pressed = button4   
     toal.addToBtn4 += 1
     }    

查看控制器2

var total = allSum?    

label.text = total.printToLabel()

使用此设置,当没有按下任何按钮时,标签显示0 0 0 0。

所以,我的问题是我无法设置label.text = "",因为我还打印了其他变量。

抱歉我最初的懒惰

3 个答案:

答案 0 :(得分:2)

将实际标签文本设置为空格。

var addCount:Int = 0
var blankSpace = ""

if addCount == 0 {
    yourlabel.text = blankSpace
} else {
    yourlabel.text = "\(addCount)"
}

更新: 这是一种用较少的代码编写当前代码的方法,并修复了将0更改为空字符串的问题

<强> AllSum

class AllSum {

    var sumsArray: [Int] = [0,0,0,0]

    func stringForLabel() -> String { //return a string with the current status
        var string = ""

        for (index, value) in self.sumsArray.enumerated() {
            if value > 0 {
                string = string + "\(value) Button \(index + 1) was pressed\n"
            }
        }
        return string
    }
}

查看控制器1

您可以在UIBuilder中使用标记来匹配数组中的索引。将所有按钮链接到相同的功能

var total = AllSum()

@IBAction func numberPressed(_ sender: UIButton) {
    total.sumsArray[sender.tag] = sumsArray[sender.tag] + 1  
}

查看控制器2

var total = AllSum()
label.text = total.stringForLabel()

答案 1 :(得分:0)

您无法将字符串(即"")分配给您已声明为Int的变量。在这种情况下,您最好在标签上设置文本时处理此问题。你可以使用一个简单的if / else语句,或者如果你想要一个单行程序,可以使用三元运算符:

if addCount == 0 {
  self.label.text = ""
} else {
  self.label.text = "\(addCount)"
}

对于三元选项:

self.label.text = addCount == 0 ? "" : "\(addCount)"

答案 2 :(得分:0)

您正在尝试将Int设置为String。 Swift是一种类型安全的语言,不允许你这样做。如果由于某种原因需要使用相同的变量代表两种状态,则可以使用带有关联值的枚举,只要它是Describable,它仍然可以使用它。

相反,你可以只有一个计算值,返回一个String,如果变量为零,则返回一个空字符串:

func displayCount () -> String {
 return addCount == 0 ? String() : String(describing:addCount)
}