Я пытаюсь передать информацию из ячейки просмотра коллекции в другой контроллер представления, а затем убрать контроллер представления. Я пытаюсь сделать это с делегацией, как я думаю, что это единственный путь, до сих пор я настроил свой протокол таким образом:Использование протокола и делегирования в SWIFT
@objc protocol CollectionViewImageDelegate {
optional func selectedCell(row: NSIndexPath, data: UIImage)
}
Я добавил свойство:
var delegate : CollectionViewImageDelegate?
и затем назвал его в didSelectItemAtIndexPath
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let imageData = self.sources[indexPath.row]
self.delegate?.selectedCell?(indexPath, data: imageData)
self.dismissViewControllerAnimated(true, completion: nil)
}
Тогда как я называю его другим View Controller до сих пор я сделал:
class ProfileViewController: UIViewController, CollectionViewImageDelegate {
var colViewImage : CollectionViewVC
в представлении сделал груз:
colViewImage.delegate = self
и это, но ничего не происходит:
func selectedCell(row: NSIndexPath, data: UIImage) {
println(data) //Nothing prints
}
Ничто не печатает я не знаю, почему? Я новичок в протоколе и делегатах и т. Д. И не могу понять, почему он не передает изображение?
Благодаря
Является ли 'образ' фактическим классом (а не экземпляром), который вы определили? Может быть, вы хотите использовать 'UIImage' вместо' image' в вашем протоколе? –
Да, спасибо, что это было, новый я был близок. Хотя я, как теперь передать эту дату, выбранную для моего другого контроллера представлений, я немного изменил свой вопрос и добавил к нему. –
Есть ли шанс, что это не сработает, потому что я отклоняю контроллер View вместо segue? –