2015-05-17 21 views
0

我有一個UITableView,它的邊框有一個帶有多行標籤的原型單元格。根據數據,表格可能只有一行。關於細胞本身的一切似乎都很好。如何讓UITableView在只有一行時調整大小

挑戰在於,當沒有足夠的數據行填滿表格時,我的邊界遠遠超出了數據範圍。我對Table View有一個底部約束,我知道它爲什麼比單行更大。

我無法弄清楚的是如何改變我對錶格視圖的約束,使它只與顯示的數據一樣大。

下面是我所得到的屏幕截圖。我想要的是邊框只能在顯示的數據行的周圍。當然,如果表中有多行使其大於它所在頁面底部的可用空間,我確實需要它滾動等。任何建議將不勝感激。

是的,我已經證實,通過打開行分隔符和驗證超過1顯示,單元格不佔用整個寬度。我還確認表格視圖中的部分數量設置爲1,並且在numberOfRowsInSection函數中返回的值爲1

enter image description here

+0

返回在方法是什麼: - (CGFloat的)的tableView:(UITableView的*)的tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath? –

+0

這是swift代碼,我沒有實現heightForRowAtIndexPath函數。 –

回答

0

我只能想到您的具體情況3個解決方案。第一個是手動預先計算您的表格視圖的大小,如Min(yourAvailableHeight, heightOfRow*numberOfRows + topMargin + bottomMargin)。或者你可以刪除底部邊框本身,只把它放在最後一個單元格中。

或者你可以使用

CGRect frame = self.tableView.frame; 
frame.size.height = self.tableView.contentSize.height; 
self.tableView.frame = frame; 
+0

所以 - 首先,我99%確定這三行代碼可以被壓縮爲一個,如下所示:tblPlaceEvents.frame.size.height = tblPlaceEvents.contentSize.height。無論如何,由於應用程序列出的高度爲44(這太小並導致數據被切斷),它無法正常工作。此結果似乎也會使任何使用rowHeigh的解決方案失效,因爲它似乎沒有給出正確的值。還有其他建議嗎? –

+0

所以這個答案實際上一旦我在表格中修復了自動佈局/自動調整問題,我的意思是在原型單元中的所有標籤以及viewDidLoad方法中的這兩行代碼上留下右上和底部約束:tblPlaceEvents.estimatedRowHeight = 87 tblPlaceEvents.rowHeight = UITableViewAutomaticDimension。然後,我可以把這一行代碼放在viewDidAppear函數中,它就可以工作。 tblPlaceEvents.frame.size.height = tblPlaceEvents.contentSize.height tblPlaceEvents是我的tableView的出口名稱。 –

+0

還有一件事 - 爲了正確工作,在cellForRowAtIndexPath函數中,我需要具有以下代碼行lobj_EventEntry!.layoutIfNeeded(),其中lob_EventEntry是我要從函數返回的單元格。 –

相關問題