我正在显示一个alertController,如果用户单击是,则应显示ProgressView,但不幸的是,Progressview和标签不会出现。如何刷新ViewController。这里是为alertController的yes-handler执行的cod。代码将毫无问题地执行,但进度视图没有出现:
func initProgressView(){
turn = 0
let xCoord = self.view.center.x
let yCoord = self.view.center.y + 10
progressLabel = UILabel(frame: CGRect(x: xCoord, y: yCoord, width: 100, height: 23))
progressLabel.text = "0 %"
progressLabel.font = UIFont.boldSystemFontOfSize(14)
progressView.center = self.view.center
progressView.trackTintColor = UIColor.lightGrayColor()
progressView.tintColor = UIColor.blueColor()
// self.view.backgroundColor = UIColor.yellowColor()
self.view.addSubview(progressLabel)
self.view.addSubview(progressView)
}
这里是完整的通话顺序: initProgressView()//参见上一篇文章
然后调用importData:
func importData (source : ImportDataInterface, data : NSData, progressStep : Int) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
source.importData(data)
dispatch_async(dispatch_get_main_queue(), {
self.counter += progressStep
return
})
})
}
最后在调用函数中: progressView.removeFromSuperview() progressLabel.removeFromSuperview()
如何刷新ViewController或者还有什么原因可能是progressView没有出现的原因。可能是,约束或自动布局问题是问题。
感谢 阿诺德
答案 0 :(得分:0)
看起来progressView重叠了progressLabel,可能你需要更改最后2个字符串顺序吗?
self.view.addSubview(progressView)
self.view.addSubview(progressLabel)
答案 1 :(得分:0)
您没有提供足够的信息。你需要向我们展示一系列的电话。
在代码返回之前,iOS不会对屏幕进行更改。以下编码模式不起作用:
create progress indicator
add progress indicator to superview
start progress indicator spinning
do long-running task
stop progress indicator
相反,你要做的就是这样:
create progress indicator
add progress indicator to superview
start progress indicator spinning
invoke long-running task with a call to dispatch_after and a delay of 0:
dispatch_after(main queue, delay 0)
{
do long running task
stop activity indicator
}
对dispatch_after的调用会在下次代码返回时将闭包排队以在主线程上运行,并且事件循环即使延迟值为0 。