我在Swift中开发应用程序。 这个应用程序有很多视图,我想在所有视图上放置一个UIProgressView
我们可以获得所有故事板视图的数组吗?
例如:
self.progressBar = UIProgressView(progressViewStyle: .Bar)
self.progressBar?.center = view.center
self.progressBar?.frame = CGRect(x: 0, y: 20, width: view.frame.width, height: CGFloat(1))
self.progressBar?.progress = 1/2
self.progressBar?.trackTintColor = UIColor.lightGrayColor();
self.progressBar?.tintColor = UIColor.redColor();
var arrayViewController : [UIViewController] = [...,...,...]
for controller in arrayViewController {
controller.view.addSubview(self.progressBar)
}
谢谢
Ysée
答案 0 :(得分:0)
我认为你真正想要的是如果正在进行的操作,就会在每个视图上显示进度。
有很多方法可以做到这一点(使用委托,NSNotificationCenter,......)但我能想到的最简单的方法是依赖viewWillAppear
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
// Check if there's an operation in progress and add progressView if relevant
}
对于用户来说,它实际上看起来像是将进度视图添加到所有视图。
答案 1 :(得分:0)
为什么不创建lazy stored property
类型为UIProgressView
的基类?您可以选择使用两种方法setProgressViewHidden(hidden : Bool)
来轻松显示和隐藏进度视图,并setProgress(progress : Float)
更新进度。然后,所有视图控制器都可以对此基类进行子类化,并方便地与进度视图进行交互。
class ProgressViewController : UIViewController {
lazy var progressView : UIProgressView = {
[unowned self] in
var view = UIProgressView(frame: CGRectMake(0, 20, self.view.frame.size.width, 3))
view.progress = 0.5
view.trackTintColor = UIColor.lightGrayColor()
view.tintColor = UIColor.redColor()
self.view.addSubview(view)
return view
}()
}
要阅读有关延迟存储属性的更多信息,请查看:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html