J'espère que quelqu'un pourra m'aider avec ce problème. Voici la capture d'écran de mon application tvOS:Essayer de mettre à jour les éléments de l'interface utilisateur lors du changement de focus entre les cellules de la vue de collection
.
Je suis en train de faire deux choses:
Lorsque l'utilisateur fait défiler vers le bas de leur télécommande, le deuxième élément de la CollectionView devient automatiquement mis au point. Je dois l'avoir pour que le premier point soit focalisé à la place. Lorsque l'utilisateur déplace manuellement le focus entre les éléments de collectionView, je souhaite que les éléments de l'interface utilisateur dans la section centrale de l'écran soient mis à jour au lieu d'avoir à les appuyer ou à les sélectionner individuellement.
Voici mon code jusqu'à présent pour cet écran:
import UIKit
// Global variable
internal let g_CR1 = "channel_cell_01"
class DashboardVC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
// outlets
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var lblChannelName: UILabel!
@IBOutlet weak var imgChannelLogo: UIImageView!
@IBOutlet weak var txtChannelDescription: UITextView!
// variables
var staticData: [Channel] = []
override func viewDidLoad() {
super.viewDidLoad()
// sample channels
initializeSampleData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - CollectionView Callbacks
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return staticData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// Get or make a cell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: g_CR1, for: indexPath) as! CollectionViewCell
// Configure
cell.imgView.backgroundColor = UIColor.black
cell.imgView.image = staticData[indexPath.row].chLogo
// Return.
return cell
}
func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
return true
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let currentChannel = staticData[indexPath.row]
DispatchQueue.main.async {
self.lblChannelName.text = currentChannel.chName
self.imgChannelLogo.image = currentChannel.chLogo
self.txtChannelDescription.text = currentChannel.chDescription
}
}
}