UICollectionViewDataSource не может выполнить «исправить это», с «Кандидатом не является функцией» в Xcode 9.3.1 - PullRequest
0 голосов
/ 15 мая 2018

У меня есть базовый UIViewController и CollectionView

class ImageGalleryViewController: UIViewController {
    @IBOutlet weak var collectionView: UICollectionView! {
        didSet {
            collectionView.dataSource = self
        }
    }
}

Когда я добавляю следующий код, предупреждение Xcode Type 'ImageGalleryViewController' does not conform to protocol 'UICollectionViewDataSource', и я знаю, что делать

extension ImageGalleryViewController: UICollectionViewDataSource {
}

Итак, я нажимаю восклицательный знак, затем нажимаю исправить, но я получаю еще два серых предупреждения, кроме @IBOutlet weak var collectionView: UICollectionView! {

1. Candidate is not a function
2. Candidate is not a function

если я выполнил код для UICollectionViewDataSource вручную, все предупреждения и ошибки исчезли.

Купить, почему «исправить это» не удалось?

Моя версия Xcode - 9.3.1

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Наконец я нашел причину.

Я создал несколько других Классов, таких как класс MyNumber: Equatable {}, Все в порядке, я вижу два следующих красных ошибки:

Type ‘MyNumber' does not conform to protocol ‘Equatable'
Do you want to add protocol stubs? [Fix]

Когда я нажимаю Исправить это, приходит уважаемый код.

Затем я создаю новый пустой проект для тестирования UICollectionViewDataSource, и я обнаружил, что суть в следующем: НЕ называйте выход Collection View Outlet "collectionView" в ViewController, любое другое имя в порядке, но не "collectionView"

Следующий код в порядке

@IBOutlet weak var galleryCollectionView: UICollectionView!

Не в порядке, вызовет сбой функции исправления заглушек протокола

@IBOutlet weak var collectionView: UICollectionView!

Вот и все.

0 голосов
/ 15 мая 2018

Не делай этого.

Соедините datasourcedelegation, если необходимо) в Интерфейсном Разработчике или, если вы действительно хотите сделать это в коде, сделайте это в viewDidLoad

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...