我有一些按钮可以在按下时在标签上打印一些文字。我在文本前面还有一个计数器,用于显示按下相应按钮的次数。但是如果没有按下某些按钮,它会在标签中显示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 = ""
,因为我还打印了其他变量。
抱歉我最初的懒惰
答案 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)
}