我们能得到所有故事板视图的数组吗
Can we get an array of all storyboard views
我正在 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)
}
谢谢
是的
我假设您真正想要的是在每个视图上显示进度(如果有操作正在进行)。
有很多方法可以做到这一点(使用委托、NSNotificationCenter 等),但我能想到的最简单的方法是依靠 viewWillAppear
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
// Check if there's an operation in progress and add progressView if relevant
}
对于用户来说,它看起来就像您将进度视图添加到所有视图一样。
为什么不创建一个具有 lazy stored property
类型 UIProgressView
的基础 class?您可以选择使用两种方法 setProgressViewHidden(hidden : Bool)
来轻松显示和隐藏进度视图,以及 setProgress(progress : Float)
来更新进度。然后你所有的视图控制器都可以 subclass 这个基础 class 并方便地与进度视图交互。
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
我正在 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)
}
谢谢
是的
我假设您真正想要的是在每个视图上显示进度(如果有操作正在进行)。
有很多方法可以做到这一点(使用委托、NSNotificationCenter 等),但我能想到的最简单的方法是依靠 viewWillAppear
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
// Check if there's an operation in progress and add progressView if relevant
}
对于用户来说,它看起来就像您将进度视图添加到所有视图一样。
为什么不创建一个具有 lazy stored property
类型 UIProgressView
的基础 class?您可以选择使用两种方法 setProgressViewHidden(hidden : Bool)
来轻松显示和隐藏进度视图,以及 setProgress(progress : Float)
来更新进度。然后你所有的视图控制器都可以 subclass 这个基础 class 并方便地与进度视图交互。
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