Доброго времени суток, не совсем понятно, для чего необходимо делегирование. Допустим приведенный тут пример http://www.vladkhambir.com/delegate_swift/ почему мы не можем использовать не делегат класса, а собсдтвенно сам класс и использовать его методы?
Делегирование!)
haymob
#2
Суть делегирования - передать ответственность за выполнение поведения связанному объекту.
Например у вас есть кастомный UI состоящий из UITextField и UIButton:
Этот UI не знает кто его будет использовать (какой контроллер), но при нажатии на кнопку, вам необходимо об этом сообщать контроллеру и передавать в него текст из UITextField, делегирование один из вариантов решения этой проблемы:
protocol MyViewDelegate: class {
func didChange(_ text: String)
}
class MyView: UIView {
@IBOutlet weak var textField: UITextField!
weak var delegate: MyViewDelegate?
@IBAction func action() {
delegate?.didChange(textField.text!)
}
}
class ViewController: UIViewController, MyViewDelegate {
@IBOutlet weak var myView: MyView! {
didSet { myView.delegate = self }
}
// MARK: - MyViewDelegate
func didChange(_ text: String) {
print(text)
}
}
askswift
#3
Получается myView реализует делегат, а другой класс его использует и мы к нашему классу добавляем функционал myView! Понял, спасибо за а пример, который действительно можно использовать. Нет ли ещё какого-нибудь примера из жизни?)