2017-08-08 52 views
1

我在UIScrollView中有多個UITableView。表的大小取決於它所具有的行數。表格按照一個接一個的順序排列。如何將UITableView幀一一對齊並放入UIScrollView?

Table 1 
Table 2 
Table 3 

現在讓我們假設表1爲「X」的位置結束,我想表2移動到位置「X」與同爲表3移動,其中表2的結束。最後,UIScrollView適合所有表格。 我是iOS新手,因此不知道該怎麼做。在此先感謝

+1

是否有你想使用多個堆棧表視圖的原因?我認爲,如果您使用一個表視圖並將其分開,以便在單個表視圖中的某個節中顯示每個舊錶視圖,則會更容易。 – AdamPro13

+0

@ AdamPro13一張發票表,一張表借方,一張表用於信用。我可以把它們放在一張桌子上,像你說的那樣分開它們嗎? –

+1

是的,你可以將它們放入一個帶有3個部分的表格視圖中!我很確定這就是你真正想要的。你可能想要實現'UITableViewDataSource'方法' - tableView:titleForHeaderInSection:'或者如果你想爲每個部分定製更多的頭部實現'UITableViewDelegate'方法'-tableView:viewForHeaderInSection:'和'-tableView:heightForHeaderInSection:'' 。 – AdamPro13

回答

1

爲此,您必須創建自定義類UITableView並禁用其滾動視圖。

@implementation SizedTableView 

- (void)setContentSize:(CGSize)contentSize { 
    [super setContentSize:contentSize]; 
    [self invalidateIntrinsicContentSize]; 
} 

- (CGSize)intrinsicContentSize { 
    [self layoutIfNeeded]; 
    return CGSizeMake(UIViewNoIntrinsicMetric, self.contentSize.height); 
} 

@end 

創建的子類UITableView自定義類,並添加上述兩種方法。

將所有tableview添加到滾動視圖並添加適當的約束來工作。

enter image description here

爲了避免故事板約束錯誤你必須添加tableview中的佔位符高度約束,這將在構建時刪除。您可以從屬性檢查器添加它。

+0

好的,讓我試一試 –

+0

萬一,如果我不想使用約束,那我該怎麼辦?因爲我正在開發的這個項目是由其他人開發的,他從未在他的設計中使用過約束條件 –

+0

@MohammadJulfikar爲此,您必須計算所有tableview內容大小,並根據該大小設置滾動視圖的內容大小。相應地更新tableview框架。 – iDhaval

1


套裝int tableHeight = numberOfRows * RowHeight;

並設置表幀作爲

table1.frame = [CGRectMake(0, 0,scrollView.frame.size.width , tableHeight)]; 
table2.frame = [CGRectMake(0, CGRectGetMaxY(table1.frame),scrollView.frame.size.width , tableHeight)]; 
table3.frame = [CGRectMake(0, CGRectGetMaxY(table2.frame),scrollView.frame.size.width , tableHeight)]; 

希望這將幫助你!

+0

此答案不考慮輪換或調整大小。如果您是iOS新手,我強烈建議您避免這種方式。 – AdamPro13

+0

當然...謝謝! –

+0

@ AdamPro13我們該如何實現呢?我認爲我們可以添加約束來滿足自動調整需求。 –

0

使用一個NSMutableArray並通過爲每個UITable設置單獨的密鑰來分隔數據。在一個視圖中使用多個表控制器不是一個好主意

相關問題