У меня есть один UIViewController
и UIView
(как компонент). Ниже приведен код для компонента.Протоколированное программирование в Swift для пользовательских компонентов
class ProcessingProgressIndicator: UIView {
var progressView: UIProgressView!
func changeProgress(_ progress: Float) {
progressView.progress = progress
}
}
Поэтому я использую этот компонент в нескольких контроллерах. Поэтому, когда мне нужно изменить значение прогресса, которое я использовал, как показано ниже в моем контроллере.
myProgressView.changeProgress(progress)
Так, чтобы компонент Component Oriented был добавлен ниже в код.
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 убедитесь, что ваш первый контроллер знает о втором контроллере, подтвердив его делегату. –