UICollectionViewCell в UIButton Focus

Моя проблема аналогична проблеме, описанной в UICollectionViewCell to UIButton Focus в tvOS, но моя кнопка находится под UICollectionView. Я пытался добавить направляющую для фокусировки, но, должно быть, я сделал что-то не так.

let topButtonFocusGuide = UIFocusGuide()
topButtonFocusGuide.preferredFocusedView = myButton
self.view.addLayoutGuide(topButtonFocusGuide)

self.view.addConstraint(topButtonFocusGuide.topAnchor.constraintEqualToAnchor(myCollectionView.bottomAnchor))
self.view.addConstraint(topButtonFocusGuide.bottomAnchor.constraintEqualToAnchor(self.view.bottomAnchor))
self.view.addConstraint(topButtonFocusGuide.leadingAnchor.constraintEqualToAnchor(myCollectionView.leadingAnchor))
self.view.addConstraint(topButtonFocusGuide.widthAnchor.constraintEqualToAnchor(myCollectionView.widthAnchor))

Я получаю эту ошибку:

libc++abi.dylib: terminating with uncaught exception of type NSException
CostomLayout[18448:888102] The view hierarchy is not prepared for the 
constraint: <NSLayoutConstraint:0x7fb9e3c5e060 V:[UICollectionView:0x7fb9e501ac00]-(0)-[UIFocusGuide:0x7fb9e3c5b8b0'']>

person teach me how to code    schedule 21.06.2016    source источник
comment
Вы уверены, что ваш UICollectionview добавлен для просмотра перед добавлением ограничений?   -  person Adnan Aftab    schedule 22.06.2016
comment
У меня есть это перед кодом руководства по фокусировке let myCollectionView = UICollectionView(frame: self.view.bounds, collectionViewLayout: collectionViewFlowLayout)   -  person teach me how to code    schedule 22.06.2016
comment
вы добавляете self.view.addSubView (myCollectionView)?   -  person Adnan Aftab    schedule 22.06.2016
comment
Это дает мне другую ошибку. Я совершенно новичок в быстром и во всем этом.   -  person teach me how to code    schedule 22.06.2016
comment
Я обновил свой ответ, но я думаю, что вам нужно больше узнать об основах, поэтому перейдите в Apple docs и узнайте больше об основных вещах.   -  person Adnan Aftab    schedule 22.06.2016


Ответы (1)


Похоже, у вас нет CollectionView в иерархии представлений, значит, вы не добавили collectionView как subView из view. Прежде чем применять какие-либо ограничения, убедитесь, что вы добавляете collectionView как subview. Вы можете сделать это, как показано ниже

self.view.addSubView(myCollectionView)

Добавьте этот код перед

self.view.addConstraint(topButtonFocusGuide.topAnchor.constraintEqualToAnchor(myCollectionView.bottomAnchor))

Обновление: новая ошибка связана с тем, что вы не регистрируете ячейку с помощью UICollectionView, после создания объекта представления коллекции добавьте эту строку.

[myCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];

Я думаю, вам нужно больше узнать о представлении коллекции, здесь — отличный учебник для начала работы с UICollectionView.

документы Apple по этой теме

person Adnan Aftab    schedule 22.06.2016
comment
Эта ошибка связана с тем, что вы не регистрируете тип пера/ячейки с представлением коллекции. - person Adnan Aftab; 22.06.2016