我的应用中有一个显示聊天消息的UILabel。这些聊天消息被硬编码为字符串数组。我需要的是在UILabel上逐个显示这些消息,但是当用户需要读取每条消息时,我需要在切换消息之间有一定的2秒延迟。
我实施的是以下代码:
for chatText in chatDialogue{
dispatch_async(dispatch_get_main_queue(), {
chatLabel.text=chatText as? String
})
println(chatText)
NSThread .sleepForTimeInterval(2)
}
这里我们有一个chatDialogues数组
["Hello","How are you?","Can you say DIAS","Wait Please"]
现在我需要将这些显示在同一个标签上,但在更改消息之间会有延迟。
执行时的上述实现仅显示循环中的最后一条消息。
答案 0 :(得分:0)
设置NSTimer
,每2秒触发一次,到达最后一个文本时停止:
// instance variables
let chatDialoges = ["Hello","How are you?","Can you say DIAS","Wait Please"]
var textIndex = 0
var timer: NSTimer?
// ...
// somewhere where the timer should start
self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "update", userInfo: nil, repeats: true)
//
func update() {
self.textLabel++
if self.textLabel == chatDialoges.count {
self.timer?.invalidate()
return
}
chatLabel.text = chatDialoges[self.textIndex]
}