Intereting Posts
Возможность подключения iPhone для эмулятора Ford SYNC Applink ™ IOS openGL лучший способ повернуть сферу с помощью touchMoved Соединение iTunes с отображением символа обработки tableView.addGestureRecognizer для одного раздела tableViewController Всегда не получать токен устройства из делегата didRegisterForRemoteNotificationsWithDeviceToken из UIApplication исключить известный звук из записанного звука для оценки уровня фонового звука посредством деконволюции Кнопка не запускает селектор выхода IBAction после всплывания назад, чтобы просмотреть контроллер GKMatchMakerViewController iMessage предлагает iOS 10 (бета) (Обработка изображений iOS) объект обрезки с изображения Как передать значение текстового поля кнопке Clicked в Swift? Xcode – модуль тестирует сетевой вызов Добавить мост-заголовок внутри .framwork Активы изображения: не удалось загрузить изображение, на которое ссылается нить в комплекте с идентификатором iOS Metal: как правильно захватить рамку графического процессора? Обновление даты выпуска обновления приложения iTunes Connect App

Установка делегата пользовательского класса в контроллер View View

Я создал собственный класс, который является подклассом UICollectionReusableView . По сути, это заголовок раздела Collection View, и я добавляю несколько кнопок на нем. Когда кнопка нажата, я хочу, чтобы контроллер просмотра фильтровал результаты (в зависимости от того, какая кнопка нажата).

Мне нужен мой контроллер просмотра, чтобы иметь выход к этому настраиваемому классу, но это не сработало, потому что Xcode жалуется на повторный контент, имеющий классы (хотя я собираюсь использовать только один заголовок секции CollectionView). Поэтому мой следующий вариант – это делегирование.

Мой вопрос двоякий:

  1. Как настроить делегат своего класса на контроллер представления? Обычно я устанавливаю делегат в prepareForSegue но поскольку у меня нет этого, я не уверен, что делать. Мой контроллер просмотра создан в раскадровке, и мой пользовательский класс не имеет к нему ссылки. Даже в моем контроллере просмотра я не могу получить доступ к заголовку раздела коллекционного представления, чтобы настроить его делегат на себя (я проверил документацию Apple и нет свойства для доступа к заголовку раздела).

  2. Когда я устанавливаю IBAction s в свой пользовательский класс, как я могу гарантировать, что кнопка, которая была прослушена, также передается в качестве отправителя? Я связал одну из кнопок с действием и написал func someAction (sender: AnyObject) {} но как программа знает, что сама кнопка должна быть передана в качестве отправителя?

Вот мой код:

 // Custom Class class CollectionHeaderView: UICollectionReusableView { @IBAction func buttonPressed (sender: AnyObject) { **delegate?.didTapButton(self)** } var delegate: UICollectionViewDelegate? } // Protocol protocol CollectionHeaderViewDelegate { func didTapButton(sender: CollectionHeaderView) } // View Controller (the delegate) func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "CollectionHeaderView", forIndexPath: indexPath) as! CollectionHeaderView headerView.delegate = self return headerView } extension BrowseViewController: CollectionHeaderViewDelegate { func didTapButton(sender: CollectionHeaderView) { print("Delegate's Button Tapped") } } 

Выделенная область – это где Xcode дает мне сообщение об ошибке: «Значение типа UICollectionViewDelegate не имеет члена« Did Tap Button »- не знаю, почему это относится к UICollectionViewDelegate. Я попытался изменить имя переменной и вызов нажать делегат в headerViewDelegate, но он все же дал ошибку.

Solutions Collecting From Web of "Установка делегата пользовательского класса в контроллер View View"

Если этот UICollectionReusableView является заголовком раздела в виде коллекции, вы можете создать его в коде. Вам нужно было бы реализовать collectionView:viewForSupplementaryElementOfKind:atIndexPath: В этот момент вы (контроллер вида) создаете заголовок раздела и можете настроить его любым способом.

В качестве альтернативы, если этот UICollectionReusableView создается макетом потока в раскадровке, тогда вставьте в него кнопки в раскадровку и просто соедините их действия, как обычно.

введите описание изображения здесь

но как программа знает, что сама кнопка должна быть передана в качестве отправителя

Когда кнопка постучана и активируется ее действие управляющего события, сама кнопка всегда предоставляется в качестве параметра. Это часть контроля.