我一直在使用Xcode编写一个简单的程序,其中随机生成密码并用于编码字符串。偶尔生成一个字符串需要非常长的时间。所以我想我会在文本视图中显示生成的编码字符串,以向用户显示程序正在运行。
<!-- language: swift -->
@IBOutlet weak var textViewer: UITextView!
@IBOutlet weak var generate: UIButton!
@INOutlet weak var inputText: UITextField
var codeType = true
func Encode(text: String) -> String {
// lots of string manipulation
for foo { // A for loop iterating through every char of text
code += secretMessage[foo]
textViewer.text = code
}
return code
}
@IBAction func GenerateCode(_ sender: UIButton) {
var message = "Well Something Went Wrong"
if self.codeType = true { // Check if user is encoding or decoding
message = Encode(text: inputText.text!)
}
textViewer.text = message
}
但是文本字段只会在函数完成生成代码后才会更新。如何逐个字符而不是一次性更新文本字段
答案 0 :(得分:0)
您可能需要在主队列上调度文本更新以获取文本字段的可视状态。其中一个关键指标是控制台中的错误消息。类似于&#34;尝试更新视觉布局&#34;应该有类似以下的东西来尝试解决问题
func encode(text: String) -> String {
// lots of string manipulation
for foo { // A for loop iterating through every char of text
code += secretMessage[foo]
DispatchQueue.main.async {
self.textViewer.text = code
}
}
return code
}
@IBAction func GenerateCode(_ sender: UIButton) {
var message = "Well Something Went Wrong"
if self.codeType = true { // Check if user is encoding or decoding
DispatchQueue.global(qos: .background).async {
message = Encode(text: inputText.text!)
}
}
// textViewer.text = message // Shouldn't need this line anymore
}