Ho una sottoclasse di UICollectionViewCell
. La cella è progettata visivamente nello storyboard con molti componenti e questi componenti sono legati alle variabili nella sottoclasse Swift utilizzando lo storyboard.Come ripristinare i binding in UICollectionViewCell dopo la decodifica
La classe Swift fornisce solo la logica per il popolamento dei componenti dai dati recuperati dall'origine dati.
Ad esempio:
class InfoCollectionViewCell : UICollectionViewCell {
@IBOutlet weak var mainPanel : UIView!
@IBOutlet weak var panel1 : UIView!
@IBOutlet weak var firstName : UILabel!
@IBOutlet weak var lastName : UILabel!
@IBOutlet weak var address : UILabel!
etc ...
func setVariousProperties(etc) {
firstName.text = ... etc
I dati-source fa la solita cosa:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("InfoCell", forIndexPath:indexPath)
if let c : InfoCollectionViewCell = cell as? InfoCollectionViewCell {
c.setVariousProperties(...)
}
decodifico origine solo implementato/metodi di codifica che contengono un'affermazione "non implementato", ma è diventato apparente che occasionalmente il framework stava codificando e decodificando la classe. Ho implementato i metodi fittizi di codifica/decodifica senza salvare i componenti, causando problemi prevedibili con valori nulli quando i componenti sono stati acceduti.
Quindi sembra che sia necessario implementare la codifica e la decodifica di tutti i controlli nella sottoclasse UICollectionViewCell
uno alla volta o devo trovare un modo migliore.
Sembra uno spreco di tempo in quanto non ho effettivamente bisogno (non credo) di salvare il contenuto dei componenti poiché saranno solo per essere riutilizzati comunque dalla sottoclasse: sovrascriverò il contenuto del componente valuterà dall'origine dati.
Ovviamente, tutti i controlli sono definiti nello storyboard. Potrei recuperarli manualmente per nome dallo storyboard nel metodo init, ma ciò sembra altrettanto noioso e rende ridondante il collegamento grafico dei controlli e delle variabili.
C'è un modo migliore?
Posso solo dire "ripristinare le connessioni" o qualcosa del genere?
EDIT:
Da qualche parte tra la pubblicazione della domanda e aggiungendo la generosità, il problema si fermò accadendo. Ora noto che il metodo di codifica dei miei componenti non viene chiamato. Quindi, per qualche ragione, la struttura stava decidendo di serializzare i miei oggetti e deserializzarli, ma ora non lo è. Quindi il problema non si verifica e non sono in grado di fornire una traccia di stack.
È possibile che qualche aggiornamento a XCode abbia risolto questo problema o potrebbe essere qualcos'altro.
Sono ovviamente ancora preoccupato che ci sia qualche bug in agguato da qualche parte.
Chiunque altro abbia questo problema? Apprezzerei i commenti. – rghome