2014-07-11 11 views
5

Gdy używasz wbudowanych stylów (podtytuł, prawy szczegół itp.) Dla UITableViewCell s, możesz łatwo uzyskać dostęp do etykiet tekstowych za pomocą textLabel i detailTextLabel, które są właściwościami na UITableViewCell, niezależnie od tego, jaki styl wybierzesz. Wykorzystałem to na moją korzyść, aby zaimplementować kod wielokrotnego użytku, który pozwala mi zastosować określone style do wszystkich moich komórek statycznych. Ale teraz chcę przekonwertować je wszystkie na niestandardową komórkę stylu, ale w tym stylu nadal będę mieć tylko dwie etykiety. Moje pytanie brzmi: czy możliwe jest ręczne ustawienie właściwości niestandardowej komórki dla właściwości textLabel i detailTextLabel? Jeśli tak, nie musiałbym zmieniać kodu, musiałbym po prostu ustawić właściwości etykiety. W przeciwnym razie będę musiał zmienić cały mój kod, aby kierować każdą etykietę dla każdej pojedynczej komórki, która będzie naprawdę nieporządna.Czy jest możliwe ustawienie textLabel komórki niestandardowej?

Na przykład, co robię, mam metodę, która akceptuje w UITableViewCell iw tej metodzie mogę włączyć lub wyłączyć tę komórkę, która zmienia kolory tekstu etykiety na czarny lub jasnoszary, stosownie do potrzeb. Jeśli nie mogę uzyskać dostępu do właściwości textLabel i detailTextLabel, będę musiał dodać instrukcje if, aby porównać parametr komórki z komórkami, aby wiedzieć, które etykiety muszę zmienić.

+0

Będziesz mieć dostęp do 'textLabel' i' detailTextLabel', ponieważ zakładam, że Twoja komórka niestandardowa będzie podklasą UITableViewCell. – hgwhittle

Odpowiedz

7

Jesteś pewien! Wystarczy zaimplementować moduły pobierające dla etykiet, aby przekierować je na etykiety niestandardowej komórki.

- (UILabel *)textLabel { 
    return self.myCustomCellTextLabel; 
} 

- (UILabel *)detailTextLabel { 
    return self.myCustomCellDetailTextLabel; 
} 
+0

Dzięki, właśnie tego szukałem! Wpadłem jednak na problem. Podklasowałem 'UITableViewCell', dodałem etykiety do XIB, kontrolka przeciągnęła je do podklasy i zwróciła te etykiety, jak powiedziałeś, następnie w storyboardzie zmieniłem klasę niestandardową każdej komórki na moją podklasę i usunąłem etykiety, które miałem w tym scenorysie komórka. Kontrolowałem przeciągnęło te komórki storyboardu do mojego kontrolera widoku tabeli iw 'viewDidLoad' Próbowałem ustawić tekst, ale nic się nie pojawiło. Debugger pokazuje, że etykieta tytułu ma wartość 'nil', więc' self.custCell.textLabel.text = @ "a" 'nie powoduje pojawienia się w komórce. – Joey

+0

Czy te statyczne komórki pochodzą z storyboardu? – CrimsonChris

+0

Tak. Postanowiłem przyjąć inne podejście i po prostu dodać trzecią etykietę do komórki zamiast tworzyć całkowicie niestandardową komórkę, ale mimo to chciałbym wiedzieć, co robiłem źle. – Joey

0

W niestandardowym komórce, trzeba dodać wszystkie widoki w contentView. To jest zaprojektowany sposób, a używanie istniejących textField i detailTextField nie jest zalecane, ponieważ może powodować niezdefiniowane zachowanie przez wbudowaną logikę układu. (Nie użyłem ich, mogą działać dobrze, ale nie podejmę ryzyka)

Jeśli chcesz uniknąć łatania całego istniejącego kodu, możesz spróbować podklasy i nadpisać właściwości etykietom, które stworzyłeś.

Powiązane problemy