2016-06-21 24 views
0

Mein Problem ist ähnlich dem Problem in UICollectionViewCell to UIButton Focus in tvOS beschrieben, aber meine Taste ist unter der UICollectionView. Ich habe versucht, Fokusführer hinzuzufügen, aber ich muss etwas falsch gemacht haben.UICollectionViewCell zu UIButton Fokus

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)) 

ich diesen Fehler:

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'']> 
+2

sind Sie sicher, dass Ihre UICollectionview wird hinzugefügt, bevor zu sehen Hinzufügen Einschränkungen? –

+0

Ich habe dies vor dem Fokusleitfaden 'lassen myCollectionView = UICollectionView (frame: self.view.bounds, collectionViewLayout: collectionViewFlowLayout)' –

+0

fügst du self.view.addSubView (myCollectionView) hinzu? –

Antwort

0

Es sieht aus wie Sie nicht CollectionView in Sicht Hierarchie verfügen, bedeutet, dass Sie nicht collectionView als subView von view hinzugefügt haben. Bitte stellen Sie sicher, dass Sie collectionView als subview hinzufügen, bevor Sie irgendwelche Einschränkungen anwenden. Sie können wie folgt tun unten

self.view.addSubView(myCollectionView) 

Fügen Sie diese wie der Code vor

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

Update: Der neue Fehler ist, weil Sie nicht Zelle Registrierung mit UICollectionView, nachdem hinzufügen Sammlung Ansicht Objekt erstellen diese Linie.

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

Ich denke, du mehr über Sammlung Ansicht lesen müssen, ist here ein großes Tutorial, um loszulegen mit UICollectionView

Apple docs zu diesem Thema

+0

'2016-06-22 09: 42: 35.092 CostomLayout [25898: 947580] *** Assertionsfehler in - [UICollectionView _dequeueReusableViewOfKind: withIdentifier: forIndexPath: viewCategory:], /BuildRoot/Library/Caches/com.apple.xbs/ Quellen/UIKit_Sim/UIKit-3512.60.315/UICollectionView.m: 3995 2016-06-22 09: 42: 35.095 CostomLayout [25898: 947580] *** Beenden der App aufgrund der nicht abgefangenen Ausnahme 'NSInternalInconsistencyException', Grund: 'konnte nicht Eine Ansicht der Art aus der Warteschlange entfernen: UICollectionElementKindCell mit dem Bezeichner Zelle - muss eine Schreibfeder oder eine Klasse für den Bezeichner registrieren oder eine Prototypzelle in einem Storyboard verbinden'' –

+0

Dieser Fehler tritt auf, weil Sie den Schreib-/Zellentyp nicht mit der Sammlungsansicht registrieren –