我正在尝试创建一个"模拟"通过在用户单击“保存”按钮时显示活动指示符与服务器交互。 (完成的应用程序实际上将与服务器交互)我为保存按钮设置了一个IBAction,我正在调用activityIndicator,为它设置动画,然后我暂停一下。最后,活动指标隐藏。唯一的问题是,活动指标没有显示。如果我注释掉NSThread.sleepForTimeInterval(4)
和activityIndicatory.stopAnimating
,则表示活动指示。我试图将它们从IBAction中移出“保存”按钮,但这导致代码出错。这是代码:
@IBAction func saveDTrans(sender: UIBarButtonItem) {
activityIndicator.hidden = false
activityIndicator.startAnimating()
//pause code to let the activityIndicator show for a bit
NSThread.sleepForTimeInterval(4)
activityIndicator.stopAnimating()
activityIndicator.hidden = true
}
答案 0 :(得分:1)
我不认为你想让线程睡觉,因为这是主线程并且活动指示器不会运行。这也不是一个好习惯。
最好将它放在dispatch_after块
中@IBAction func saveDTrans(sender: UIBarButtonItem)
{
activityIndicator.hidden = false
activityIndicator.startAnimating()
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 4 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
activityIndicator.stopAnimating()
activityIndicator.hidden = true
}
}
答案 1 :(得分:0)
以下代码将停止主线程:
NSThread.sleepForTimeInterval(4)
请改为尝试:
@IBAction func saveDTrans(sender: UIBarButtonItem) {
activityIndicator.hidden = false
activityIndicator.startAnimating()
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
activityIndicator.stopAnimating()
activityIndicator.hidden = true
}