Вот код с процессом делегата предложил ...Вызов функции в контроллере представления из другого контроллера представления
в главном контроллере представления ...
protocol FilterDelegate: class {
func onRedFilter()
func onGreenFilter()
func onBlueFilter()
func onUnfiltered()
}
class ViewController: UIViewController, FilterDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
----
// Increase red color level on image by one.
func onRedFilter() {
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "filterSegue" {
let dest = segue.destinationViewController as! CollectionViewController
dest.filterDelegate = self
}
}
в виде коллекции контроллере .. .
var filterDelegate: FilterDelegate?
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
print("Cell \(indexPath.row) selected")
guard let filterDelegate = filterDelegate else {
print("Filter delegate wasn't set!")
return
}
switch indexPath.row {
case 0:
filterDelegate.onRedFilter()
case 1:
filterDelegate.onGreenFilter()
case 2:
filterDelegate.onBlueFilter()
case 3:
filterDelegate.onUnfiltered()
default:
print("No available filter.")
}
Прямо сейчас ... код останавливается в защитном блоке и печатает сообщение об ошибке. Блок переключателя не выполняется при любом нажатии ячейки.
Я пробовал это, и не только ячейки не вызывают фильтры (даже не встроенные операторы печати, которые печатают работу indexPath.row), но теперь горизонтальная прокрутка контроллера коллекции нарушена. Есть идеи? –
Похоже, что что-то перепуталось с контроллером дочернего представления, а методы UICollectionViewDataSource не работают. Не видя кода, трудно сказать, что происходит. Думаю, я бы удостоверился, что он все еще подклассифицирует UICollectionViewController (не UIViewController) и убедитесь, что источник данных по-прежнему правильно подключен в раскадровке. –
Ну, мне удалось вернуть его, поэтому просмотр коллекции прокрутки работает. Можете ли вы объяснить мне, что делает блок с охранником и что-то отсутствует? В настоящее время его печать «Делегат фильтра не был установлен!» оператор на каждой ячейке нажимает на меню прокрутки и возвращается, никогда не попадая в оператор switch. –