2016-07-18 14 views
5

To jest scenariusz: mam tabelę, w której znajdują się komórki o dynamicznej wysokości. W każdej komórce mam etykietę i przełącznik. Kiedy uruchomię aplikację tylko te dwa mogą być widoczne, ale potem ustawię przełącznik na true, wtedy pod tymi dwoma elementami pojawia się widok tekstowy (ukryty?), Zwiększający wysokość komórki.UITableViewCell dynamiczna wysokość + ukryte elementy zajmują miejsce w Swift?

Jak mogę to zrobić? Bo kiedy spróbuję ukrytych elementów zajmij miejsce również.

To jest to, co chcę: enter image description here

Rzeczywistość: enter image description here

Jak mogę to zrobić? Próbowałem użyć nowego widoku stosu, który może obsłużyć go dobrze, ale nie w komórce tabeli ....

Jak mogę to rozwiązać?

Odpowiedz

0

myślę, że może to być rozwiązane za pomocą ograniczenia:
- ustaw ograniczenie wysokości do widoku tekstowym
- stworzyć rynek zbytu dla tego ograniczenia w kontroler widoku,
- zmień stałą własność ograniczeń w kontroler widoku, gdy używany jest przełącznik.

+0

Ale w tej sprawie muszę korzystać z delegatów, prawda? – nethuszar

+0

Nie. Możesz zmienić ograniczenie w wysyłanej akcji IBAction swojego przełącznika. – Macple

+0

Musisz przeliczyć w jakiś sposób wysokość komórki, nie będzie automatycznie zmieniać jej rozmiaru. – nethuszar

0

Jeśli ukryjesz swój widok tekstowy, twój widok tekstowy nadal tam jest, długość tekstu jest tak długa, jak długo nie jest ukryta.

Zamiast więc ukryć/pokazać tekst w widoku tekstowym, lepiej zaktualizować tekst swojego widoku tekstowego z "" -> "co tylko chcesz pokazać."

W takim przypadku układ automatyczny może z łatwością obsługiwać zapytanie o targi. Wystarczy tylko zestaw

self.tableView.estimatedRowHeight = 65 //whatever number 
self.tableView.rowHeight = UITableViewAutomaticDimension 

aw XIb komórka/ujęć, dodać ograniczenia na top i bottom swojego widoku tekstu, nie zapominać, aby twój widok tekst nie przewijania, jak również.

Faktycznie, ja polecam Ci po prostu użyć UILabel w zastępstwie UITextField, wystarczy ustawić lineNumber z Label być 0 i można zaniedbać scroll and size setting widoku tekstowym.

+0

Potrzebuję tekstu, ponieważ użytkownik może napisać komentarz. Muszę więc pokazać pusty widok tekstowy. – nethuszar

+0

Tak. Możesz pokazać pusty widok tekstowy i po prostu musisz uniemożliwić przewijanie tekstu i mieć właściwy rozmiar. –

+0

Ale myślę, że tracisz punkt, że za każdym razem muszę ponownie przeliczyć wysokość rzędu. – nethuszar

0

Rozwiązałem to mieszając tę ​​odpowiedź: Dynamic Height Issue for UITableView Cells (Swift) dla dynamicznej wysokości, a następnie dla widoków, które pokazują lub nie dodałem ograniczenia wysokości do widoku, a następnie w komórceForRowAtIndexPath wystarczy ustawić stałą ograniczenia na 0, jeśli chcesz ukryj go lub do swojej wysokości, jeśli go pokażesz.

Mam nadzieję, że pomoże!

Powiązane problemy