2015-10-08 10 views
6

così sto esplorando il nuovo tvOS. Poiché volevo replicare la sezione di funzionalità orizzontale dell'app store (ad esempio "Migliori nuove app")Impossibile mettere a fuoco UICollectionViewCell all'interno di UITableViewCell

Il mio piano era utilizzare UITableView per disporre la struttura di base (righe) e utilizzare un UICollectionView per tutti i singoli elementi orizzontalmente scorrevoli.

Sfortunatamente il tvOS mette sempre a fuoco UITableViewCell, non l'UICollectionViewCell all'interno. Ho già letto su

override var preferredFocusedView: UIView? { 
    return aView 
} 

Quindi usare questo all'interno del mio controller è piuttosto difficile per ottenere la sottoview corretta.

C'è qualcosa che potrei esaminare o qualcuno potrebbe per piacere indicarmi la giusta direzione? Passare attraverso tutte le sottoview fino a quando non ottengo quella corretta mi sembra una cattiva idea.

Grazie mille!

risposta

12

Ho provato una situazione simile in cui ho avuto un CollectionView all'interno di un CollectionView per ottenere il setup che hai descritto. Chiamiamoli innerCV e outerCV. Per far sì che innerCV sia focalizzato e non le celle di outerCV, imposto questo metodo delegate per restituire false per outerCV.

- (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath { 
    return NO; 
} 

A sua volta, le celle di innerCV sono ora focalizzabili rispetto alle celle di outerCV.

Il credito per questo va a Apple. Ho usato il loro progetto di esempio come guida per iniziare. Dai un'occhiata agli esempi di Focus all'interno del loro progetto.

Sample Project: Apple tvOS UIKitCatalog

+1

Hey Richard, grazie mille per il vostro aiuto. L'ho già provato e sfortunatamente non ha funzionato per il mio setup, il che mi ha fatto pensare che avrei potuto incasinare qualcosa lì sopra. Penso che dovrò rimettere in piedi un progetto di base e testarlo. – rdesign

+0

Grazie Richard, questo problema è stato risolto da Apple nel progetto di esempio. – jpincheira

+0

@jpincheira Qual è la correzione allora? –

1

ho usato un approccio diverso ..

Impostare la Tableview selection proprietà No Selection nella storyboard rende il motore di messa a fuoco per mettere a fuoco sulla cella UICollectionViewCell piuttosto che UITableViewCell.

Speranza che aiuta :)

Image