У меня есть пользовательское представление, созданное подклассом UIView, и у него есть два подпредставления UITextView, которые создаются внутри его метода init. Скажем для пояснения, что у меня есть суперпредставление A, содержащее два UITextViews B и C.
С другой стороны, у меня есть UIViewController VC, который управляет суперпредставлением A и отвечает за его управление. Это означает, что у него есть метод, который контролирует, что происходит, когда пользователь изменяет текст на C.
Когда кто-то должен контролировать UITextView, он обычно делает что-то вроде
textView.delegate = self
Я хочу сделать то же самое, но C не виден из VC. VC просто использует A, поэтому у меня есть
a.delegate = self
и тогда у меня появилась идея сделать это внутри реализации A:
weak var delegate: UITextViewDelegate? {
get {
return c.delegate
}
set {
c.delegate = newValue
}
}
Но это дает мне ошибку, говоря, что это разворачивает необязательное значение, фактическое значение которого равно nil.
Итак, как правильно управлять UITextView C (который находится внутри UIView A) из VC, который имеет только экземпляр A.