Я нашел ответ на проблему.
В родительском FilterCollectionViewController
я сделал переменную colorName
, как
var colorName: String!
во втором UIVieControllerCell
Я объявил переменнуюкласса Parent ViewController
var colorName: FilterCollectionViewController?
Таким образом, во втором UICollectionView в функции didSelectItemsAt
я добавил следующий код
colorName?.colorName = "blau"
Это должно было быть объявлено снова в первом UICollectionview
, родитель второго UICollectionView
и ребенок FilterCollectionViewController
.Объявление было в функции cellForItemAt
cell.colorName = self
И это все.Название цвета обновляется при нажатии кнопки.
Вот сокращенный код:
class FilterCollectionViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var colorName: String!
override func viewDidLoad() {
super.viewDidLoad()
//...register UICollectionview declare button etc.
}
@objc func addButtonFunc(sender:UIButton){
print(colorName)
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellID", for: indexPath) as! FilterCell
cell.colorName = self
return cell
}
А в классе FilterCell:
var colorName: FilterCollectionViewController?
//Class is initialised with function, in the function another UUICollectionView is registered.
//...functions like numberOfItemsInSection and cellForItemAt are declared
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
colorName?.colorName = "blau"
}