我有一个UIViewController
和UIView
(作为组件)。以下是该组件的代码。面向协议的Swift中的自定义组件编程
class ProcessingProgressIndicator: UIView {
var progressView: UIProgressView!
func changeProgress(_ progress: Float) {
progressView.progress = progress
}
}
所以我在多个控制器使用该组件。所以当我需要改变我在控制器中使用的进度值。
myProgressView.changeProgress(progress)
因此,为了使组件面向协议,我在下面添加了代码。
protocol ProgressUpdateable {
func updateWith(progressView: ProcessingProgressIndicator,progress: Float)
}
extension ProgressUpdateable {
func updateWith(progressView: ProcessingProgressIndicator,progress: Float) {
// Method gets called and can change progress
}
}
所以从我的控制,我把方法如下
updateWith(progressView: progressView,progress: progressData.progress)
这是我如何使它协议为主。
所以我的问题是:它是否是正确的执行方式?
我需要传递progressView的对象我可以摆脱它吗?
您需要制作自定义组件,遵守协议,然后使用它来调用该方法。混乱在哪里? –
你能描述如何使它符合协议吗? –
@parth Adroja确认您的第一个控制器通过向其代表确认了解第二个控制器。 –