2014-06-06 11 views
22

Umieszczam kod UITableView w innym UIScrollView. Chcę tylko przewinąć UIScrollView, a nie UITableView, więc chcę wyłączyć przewijanie w UITableView, a także rozwinąć contentHeight dla UITableView, aby pomieścić wszystkie dynamiczne naraz.Spraw, aby funkcja UITableView nie była przewijana i dostosuj wysokość, aby pomieścić wszystkie komórki.

Jak miałbym to zrobić?

+0

Dlaczego potrzebujesz tej funkcji? Chcesz dodać więcej pod-widoku w widoku przewijania? –

+0

Chcę dodać, że zasadniczo chce się zintegrować subviews na tej samej stronie co widok tabeli, a nie cały widok jako widok tabeli. – Allen

+1

, więc musisz rozwinąć swój tableview, aby dopasować długość tego stołu. następnie dostosuj rozmiar zawartości twojego widoku przewijania –

Odpowiedz

2
  1. Dodać Ramka tableview wszystkie linie możliwe -> bez przewijania na stole widzenia
  2. Set contentSize Twojego Scrollview = wielkości swoimi tableViews.
+0

Należy również ustawić tableview.bounces = NO, aby upewnić się, że nie kradnie fokusa przewijania. – Lytic

0

UITableView to widok przewijania. Chociaż nie powinno się zagnieżdżać UIScrollviews, można wyłączyć przewijanie widoku tabeli.

+1

Rozumiem to, ale będę musiał dostosować wysokość widoku stołu, aby pomieścić wszystkie komórki. na przykład, jeśli mam 5 komórek, wyłączenie funkcji uitableview scroll ukryje tylko 2 ostatnie z nich. – Allen

+0

Możesz to zrobić, gdy przypisujesz wysokość UITableViewCell do wywołania zwrotnego źródła danych UITableView. Tak więc, biorąc pod uwagę liczbę elementów w tablicy źródła danych, przypisz wysokość wystarczającą do dopasowania wszystkich elementów. – J2theC

7

Musisz ustawić zwój UITableView do false,

tableview.scrollEnabled = false; 

tableview.frame = CGRectMake(tableview.frame.origin.x, tableview.frame.origin.y, tableview.frame.size.width, tableview.frame.size.height+(resultArray.count*HEIGHT_OF_CELL)); 

a następnie można dodać UITableView na UIScrollView ustawiając jego zawartość rozmiar jak UITableView wysokości.

+1

Co powiesz na wysokość dynamiczną komórek? – EridB

+0

dla dynamicznej wysokości komórki można obliczyć całkowitą wysokość w metodzie ** HeightForRowAtIndexPath **, a następnie odpowiednio ustawić ramkę scrollView. – sourav

7

Ustaw tabelę Rozmiar widoku równy rozmiarowi treści.

override func viewDidLayoutSubviews() { 
    tableView.frame.size = tableView.contentSize 
} 
+2

, ale nie zwiększa to rozmiaru zawartości widoku przewijania. Rozmiar zawartości pozostaje stały. –

0

Choć jest to bardzo proste do wykonania z tableview stałej zawartości jako podrzędny w Scrollview, co to jest, że są dokładnie chce osiągnąć? Dynamiczne komórki ze stałą zawartością powyżej i poniżej? Trwale wyświetlana zawartość z sekcją przesuwną pośrodku?

Może czystsze konstrukcja byłaby za pomocą pojedynczego UITableView z tabeli Nagłówek i stopka, lub nagłówku jest stopka Wykorzystując automatyczne zachowanie dostarczone przez UITableViewStyleGrouped vs UITableViewStylePlain

powiedział, że inne odpowiedzi wydają się tworzyć przyzwoity rozwiązanie:

Set scroll enabled false on table view 
Set tableview content size to sum of all cell sizes 
Set tableview frame to content size 
Adjust scroll view frame to account for dynamic table size if necessary 
Add table view to scroll view amidst other content 

Inną opcją dla manipulowania zachowanie przewijania będzie sprawdzenie czy Scrollview w tableview delegata Scrollview shouldStartScrolling lub podobnych metod, co pozwoliłoby na większą elastyczność nad UI kontroluje

0
  • Przede wszystkim trzeba to skonfigurować UITableView przewijając NO
  • drugie, stworzenie height constraint do widoku tabeli i po wywołaniu [UITableView reloadData] zmienić height constraint

    tableViewHeightConstraint.constant = numberOfRows * heightOfEachRow; 
    
Powiązane problemy