在UILabel中添加多行

时间:2017-10-26 05:29:36

标签: ios swift uilabel

我正在尝试使用用户的输入值制作时间表应用。每当我尝试在标签上打印结果时,它只打印最后一行而不是完整的表格。

如何在UILabel中附加文字?这是我的代码:

if let textBox = textField.text{
    let textBoxNum = Int(textBox)

    if let number = textBoxNum{
        if number > 0{
           let i = 1

           while i <= 20{
               label.text = "\(number) x \(i) = \(number * i)"
            }
        }
        else{
            label.text = "Please enter a positive whole number"
        }
    }
    else{
        label.text = "Please enter a positive whole number"
    }
}

2 个答案:

答案 0 :(得分:0)

赋值运算符=只需将新值重新分配给标签文本即可。您需要使用Compound Assignment Operator调用添加赋值运算符+ =添加现有文本,它将通过将新值添加到现有值来指定新值。

let a:String = "Hello"      
print(a)                    // Hello
a += " World!"
print(a)                    // Hello World!

同样的术语将适用于您将在标签的text属性上使用+ =的情况。

if let textBox = textField.text{
    let textBoxNum = Int(textBox)

    if let number = textBoxNum{
        if number > 0{
           let i = 1

           while i <= 20{
               label.text += "\(number) x \(i) = \(number * i)\n"
               // Use of compound operator here will append the text so you have
               // to use a new line escape character to print the text properly.
            }
        }
        else{
            label.text = "Please enter a positive whole number"
        }
    }
    else{
        label.text = "Please enter a positive whole number"
    }
}

有关此处运营商的更多信息: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html

答案 1 :(得分:0)

除其他答案外(使用+=\n换行):

如果您使用标签,则必须将行数设置为零,这将允许无限数量的行:

label.numberOfLines = 0

但您最好还是希望UITextField显示多行文字,如果文字太长,用户可以向上和向下滚动。您只需要禁用编辑/键盘弹出,例如:

class TheViewController: UIViewController, UITextFieldDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.theTextField.delegate = self
    }

    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        return false
    }
}