2012-05-09 53 views
17

如何可以做在一個UIViewController以下(含有的tableview作爲一個子視圖)如何嵌入一個UITableView在一個UIScrollView

我最初具有一個UIViewController示出的預覽部分(UIView的)

//Setup container for preview section 
UIView *tempContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 100)]; 
self.preview_answer_container = tempContainer; 
self.preview_answer_container.backgroundColor = [UIColor clearColor]; 
[tempContainer release]; 
[self.view addSubview:self.preview_answer_container]; 

我還添加一個UITableView(和搜索欄)下面

//setup tableview 
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,44 ,320,self.view.frame.size.height - 44)]; 
self.tagFriendsTableView = tempTable; 
self.tagFriendsTableView.delegate = self; 
self.tagFriendsTableView.dataSource = self; 
[tempTable release]; 

[self.view addSubview:self.tagFriendsTableView]; 

enter image description here

有了這個設置,我的滾動面積小(下面預覽部分僅靜態區域)

如何修改我的代碼,這樣 1)我可以滾動整個頁面向上即預覽部分和實現代碼如下會滾動在一起 2)滾動作爲一個整體時,搜索欄到達頂部(導航欄下方會停止)(見截圖),但在UITableView中的內容仍然是滾動

enter image description here

編輯:

添加了UIScroll視圖的代碼。但是,我沒有改變。我的代碼有什麼問題?

//setup scroll view 
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

//Search 
UISearchBar *tempBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 120 + 20, 320, 44)]; 
self.sBar = tempBar; 
[tempBar release]; 
self.sBar.delegate = self; 
self.sBar.tintColor = [UIColor colorWithHexString:@"#b6c0c7"]; 
self.sBar.placeholder = @"Search for FB and DM friends"; 

[scroll addSubview:sBar]; 

//setup tableview 
UITableView *tempTable = [[UITableView alloc]initWithFrame:CGRectMake(0,144 + 20 + 20 ,320,self.view.frame.size.height - 144 - 20 - 20 - 44)]; 
self.tagFriendsTableView = tempTable; 
self.tagFriendsTableView.delegate = self; 
self.tagFriendsTableView.dataSource = self; 
[tempTable release]; 

//Add the scroll view to the parent view 
[scroll addSubview:self.tagFriendsTableView]; 

scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 
[self.view addSubview:scroll]; 
[scroll release]; 

回答

33

我對你的解決方案,

僅使用的tableView足夠

  1. 使 「預覽視圖」 作爲您的tableView

  2. 的HeaderView使 「搜索欄」作爲您的表格部分標題視圖

您可以製作它完美:)

+3

這隻適用於一個部分的tableView。 – SAHM

+1

任何機構都可以爲我解釋一下嗎?請 – RaviJSS

1

您必須嵌入具有屏幕減去導航欄的大小,一個UIScrollView內你的UITableView。將UIScrollViews背景設置爲clearColor以允許UITableView上方的內容保持可見。

+0

嗨,謝謝你的回覆。我爲UIScroll視圖添加了一些代碼,但它對我來說不起作用,即我的原始實現沒有任何變化。你能幫我看看我編輯過的問題嗎?我在那裏添加了我的uiscrollview代碼。在此先感謝 – Zhen

+0

你實際上應該與DBD /阿達利的解決方案,它比我的更好:) –

3

無需任何幻想或定製,使用UITableView和設置預覽窗格是tableHeaderView和搜索領域在你的UITableViewDelegate使用tableView:viewForHeaderInSection:節頭。

表頭將滾動出滾動事件期間的頂部。 節標題浮動並保持可見的整個時間段,如果可見。如果您只有1個部分,那麼部分標題將一直在那裏。

0

是的,你可以使用 「的tableView:viewForHeaderInSection」。

2

或者你可以做這些步驟: 1.的tableView的禁用滾動。 2.將高度限制設置爲與其連接的tableView和IBOutlet。 3.重新載入數據之前,計算表格高度。heightConstraint.constant = (heightOfTheSingleTableViewCell) * numOfRows

0
scroll.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 

它不能滾動,因爲contentSize不夠大。您需要增加scrollView頂部的內容總長度。

相關問題