與第

2015-12-27 20 views
0

可摺疊的UITableView我想要實現一個fucntionality中,我需要摺疊和展開UITableView的一些看法。與第

我已經通過一種方法中,我可以使片段,並且在部分的點擊我顯示或隱藏單元格爲部分消失。

我的問題是有一個不應該collpsable正上方的row.i上午位第一部分混淆應該是什麼在這種情況下正確的解決方案的詳細視圖。

的情況是相當複雜的,所以我已經得出了一些草圖,以保持它的簡單。

請讓我知道正確的解決方案或例子來實現這一目標。

enter image description here

回答

0

所以,如果我理解正確的話,你希望有tableViewCells其中tableviewcell的部分可以經過一些用戶操作(按壓在同一細胞中的一個按鈕後可能)進行擴展? 那麼你可以考慮在你的表視圖細胞有一種方法這樣

- (IBAction)action:(id)sender { 
[_delegate actionPressed:relevantData]; 

} 

在動作連接到appropiate按鈕。 然後在tableviewcontroller實現該方法

-(void)actionPressed:(id)relevantData 
{ 
//update your datasource, for example retrieve the text you want in your expanded views 
[self.tableView reloadData]; 
} 

在您的自定義表格單元格執行configureWithData方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
//normal things about reusing cells etc. 
[cell configureWithData:(id)Data]; 

return cell; 
} 

。根據什麼數據與配置單元(這可能取決於一些按鈕是否按下了),你設置了擴大與否的一些看法細胞。

確保在

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
//return correct cell height depending on which views in cell were expanded or not 

} 

考慮到這一點,也可以電匯你的細胞與自動佈局和使用這樣的事情在viewDidLoad中

self.tableView.estimatedRowHeight=100.0; 
self.tableView.rowHeight=UITableViewAutomaticDimension; 
0

你可以把它你已經做的方式下拉單元格,並使用tableview標題視圖(不是節標題),它將放置在整個tableview的頂部。您可以拖動一個UIView到的tableview在故事板或編程頂部的viewDidLoad中:

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; 
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; 
[headerView addSubview:imageView]; 
UILabel *labelView = [[UILabel alloc] initWithFrame:CGRectMake(XXX, YYY, XXX, YYY)]; 
[headerView addSubview:labelView]; 
self.tableView.tableHeaderView = headerView; 

它會是這個樣子(這是一個集合視圖,雖然這樣的細胞顯然是全寬)。有一個全球性的標題,然後你的章節標題,然後你的細胞:

enter image description here

0

我幾個星期前解決同類型的問題,你可以試試這個 -

首先有自定義單元格,並使用自動佈局,使細胞自我大小調整 i。Ë它根據其內容決定了它的大小,你可以從這個鏈接需要幫助http://useyourloaf.com/blog/self-sizing-table-view-cells.html

(添加這些約束會更容易些,如果你在代碼中添加)

基本思路是增加約束擴張狀態,而分開收縮狀態並將它們存儲在數組中。

擴展狀態 - 正常狀態,如圖所示。添加所需的限制,並將其儲存在陣列說constraintsForExpansionOfView

收縮狀態 - 在該狀態下也所有視圖將是存在的,但它會收縮的所有視圖將移動到具有α-細胞的頂= 0,即收縮視圖將被隱藏,但將在那裏頂部,並不會干擾細胞的大小確定。 雖然添加這些約束收縮狀態下使用

constraint.active = false 

中還存放在單獨的數組這些約束說constraintsForContractionOfView

所以,最初你constraintsForExpansion將被應用,因爲我們沒有帶停用的停用它們他們同時加入。

,也是最後一步 - 如果你想查看下一些時間寫動畫塊承包下面的代碼 -

 for constraint in constraintsForContractionOfView { 

      constraint.active = true 
     } 


     for constraint in constraintsForExpansionOfView { 

      constraint.active = false 
     } 

在動畫塊也改變要簽訂合同,0像

意見阿爾法
someview.alpha = 0 

雖然再次擴大你的觀點只是做相反的動畫塊,即現在激活您的constraintsForExpansionOfView和停用constraintsForCo ntractionOfView並將所有隱藏視圖的alpha更改爲1.