Установка делегата для свойства, которое имеет значение по умолчанию из замыкания - PullRequest
0 голосов
/ 01 октября 2018

У меня есть представление коллекции, которое является свойством класса, и я хочу установить его следующим образом:

var collectionView: UICollectionView = {
    let cv = UICollectionView()
    cv.delegate = self
    cv.dataSource = self
    return cv
}()

Однако это дает мне ошибку, что self не относится к типу UICollectionViewDelegate / UICollectionViewDataSource, что имеет смысл, потому чтозакрытие не тот тип.Что мне интересно, если можно ссылаться на экземпляр класса изнутри замыкания?Или я должен просто установить делегат и источник данных другим методом?Я искал решение, но не нашел ничего о настройке делегата через закрытие.

Спасибо.

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете изменить свойство с var на lazy var, поскольку ленивые свойства инициализируются только при первом использовании.Так что это решит вашу проблему.

lazy var collectionView: UICollectionView = {
    let cv = UICollectionView()
    cv.delegate = self
    cv.dataSource = self
    return cv
}()
...