我在UIScrollView
中有多個UITableView
。表的大小取決於它所具有的行數。表格按照一個接一個的順序排列。如何將UITableView幀一一對齊並放入UIScrollView?
Table 1
Table 2
Table 3
現在讓我們假設表1爲「X」的位置結束,我想表2移動到位置「X」與同爲表3移動,其中表2的結束。最後,UIScrollView適合所有表格。 我是iOS新手,因此不知道該怎麼做。在此先感謝
我在UIScrollView
中有多個UITableView
。表的大小取決於它所具有的行數。表格按照一個接一個的順序排列。如何將UITableView幀一一對齊並放入UIScrollView?
Table 1
Table 2
Table 3
現在讓我們假設表1爲「X」的位置結束,我想表2移動到位置「X」與同爲表3移動,其中表2的結束。最後,UIScrollView適合所有表格。 我是iOS新手,因此不知道該怎麼做。在此先感謝
爲此,您必須創建自定義類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添加到滾動視圖並添加適當的約束來工作。
爲了避免故事板約束錯誤你必須添加tableview中的佔位符高度約束,這將在構建時刪除。您可以從屬性檢查器添加它。
好的,讓我試一試 –
萬一,如果我不想使用約束,那我該怎麼辦?因爲我正在開發的這個項目是由其他人開發的,他從未在他的設計中使用過約束條件 –
@MohammadJulfikar爲此,您必須計算所有tableview內容大小,並根據該大小設置滾動視圖的內容大小。相應地更新tableview框架。 – iDhaval
套裝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)];
希望這將幫助你!
此答案不考慮輪換或調整大小。如果您是iOS新手,我強烈建議您避免這種方式。 – AdamPro13
當然...謝謝! –
@ AdamPro13我們該如何實現呢?我認爲我們可以添加約束來滿足自動調整需求。 –
使用一個NSMutableArray
並通過爲每個UITable
設置單獨的密鑰來分隔數據。在一個視圖中使用多個表控制器不是一個好主意
是否有你想使用多個堆棧表視圖的原因?我認爲,如果您使用一個表視圖並將其分開,以便在單個表視圖中的某個節中顯示每個舊錶視圖,則會更容易。 – AdamPro13
@ AdamPro13一張發票表,一張表借方,一張表用於信用。我可以把它們放在一張桌子上,像你說的那樣分開它們嗎? –
是的,你可以將它們放入一個帶有3個部分的表格視圖中!我很確定這就是你真正想要的。你可能想要實現'UITableViewDataSource'方法' - tableView:titleForHeaderInSection:'或者如果你想爲每個部分定製更多的頭部實現'UITableViewDelegate'方法'-tableView:viewForHeaderInSection:'和'-tableView:heightForHeaderInSection:'' 。 – AdamPro13