Mam podklasę UICollectionViewCell
. Komórka jest wizualnie zaprojektowana w scenorysie z dużą ilością komponentów, a te komponenty są powiązane z zmiennymi w podklasie Swift za pomocą scenorysu.Jak przywrócić powiązania w UICollectionViewCell po dekodowaniu
Klasa Swift dostarcza logikę do zapełniania komponentów z dat pobranych ze źródła danych.
Na przykład:
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
Dane-source ma zwykle jedno:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("InfoCell", forIndexPath:indexPath)
if let c : InfoCollectionViewCell = cell as? InfoCollectionViewCell {
c.setVariousProperties(...)
}
I początkowo tylko realizowane dekodowania/metody kodują zawierające "nie realizowany" twierdzenie, ale okazało się, czasami szkielet koduje i dekoduje klasę. Zaimplementowałem fałszywe metody kodowania/dekodowania bez zapisywania komponentów, co doprowadziło do przewidywalnych problemów z zerowymi wartościami, gdy składniki były dostępne.
Wygląda więc na to, że jestem zobowiązany do implementacji kodowania i dekodowania wszystkich elementów sterujących w podklasie UICollectionViewCell
jeden po drugim, lub muszę znaleźć lepszy sposób.
Wydaje się stratą czasu, ponieważ nie potrzebuję (nie sądzę), aby zapisać zawartość komponentów, ponieważ są one przeznaczone do ponownego wykorzystania w każdym razie przez podklasę: nadpisam zawartość składnika będzie wartościami ze źródła danych.
Oczywiście, wszystkie elementy sterujące są zdefiniowane w scenorysie. Mogłem ręcznie pobrać je po nazwie z storyboardu w metodzie init, ale to wydaje się równie uciążliwe i sprawia, że graficzne łączenie kontrolek i zmiennych jest zbędne.
Czy istnieje lepszy sposób?
Czy mogę po prostu powiedzieć "przywrócić połączenia" lub coś w tym stylu?
EDIT:
Gdzieś pomiędzy zaksięgowaniem pytanie i dodawanie bounty, problem przestał dzieje. Teraz zauważam, że metoda kodowania moich komponentów nie jest wywoływana. Tak więc z jakiegoś powodu ramy decydowały o serializacji moich obiektów i deserializacji ich, ale teraz tak nie jest. Dlatego problem nie występuje i nie jestem w stanie dostarczyć śladu stosu.
Można sobie wyobrazić, że niektóre aktualizacje XCode rozwiązały ten problem, lub może to być coś innego.
Oczywiście wciąż martwię się, że gdzieś tam czai się jakiś pluskwa.
Ktoś jeszcze mający ten problem? Byłbym wdzięczny za komentarze. – rghome