2013-05-05 86 views
24

我在grouptableview中有一個自定義tableview單元格。我有一個隱藏的。然後我必須使其可見。電池標籤爲3UITableView設置tableview行隱藏

這不是我的工作代碼:

if (self.tableView.tag == 3) { 
       self.tableView.hidden = NO; //Not working. 
      } 

正是我需要做一個行可見。我希望你明白。

+0

參考這篇文章 http://stackoverflow.com/questions/2670635/hiding-uitableviewcell – icodebuster 2013-05-05 17:10:38

+1

你在那裏隱藏你的整個的tableView,而不是一行。 – memmons 2013-05-05 17:24:33

回答

39

傳遞單元格高度zeroheightForRowAtIndexPath:特定的細胞,它會自動獲得隱藏: -

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     float heightForRow = 40; 

     YourCustomCell *cell =(YourCustomCell *)[tableView cellForRowAtIndexPath:indexPath]; 

     if(cell.tag==3) 
      return 0; 
     else 
      return heightForRow; 
} 

添加下面的方法到您的代碼,它會做的伎倆。 希望它能幫助你。

+1

這對我有用。我確實將我的代碼更改爲float floatForRow = tableView.rowHeight;如果該屬性未設置,則該屬性返回默認高度。 – 2014-03-10 18:58:49

+5

自cellForRowAtIndexPath以來,這不起作用:導致它崩潰,因爲單元格不存在。在創建單元格之前設置高度。 – Joey 2014-05-20 18:21:58

+0

根據我的說法,這不是一個好的解決方案,因爲當單元格被重用時可能會導致衝突。 – 2015-01-19 07:43:55

1

請參考下面的代碼: -

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section 
{ 
    if(section == theSectionWithoutARow) 
{ 
    if(shouldRemoveTheRow) 
     return [theArrayWithTheSectionContents count] - 1; 
    else 
     return [theArrayWithTheSectionContents count]; 
    } 
    // other sections, whatever 
    } 

    - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:   (NSIndexPath *)indexPath 
    { 
     // blah blah standard table cell creation 

    id theCellObject; 

    if(indexPath.section == theSectionWithoutARow) 
    { 
    NSInteger theActualRowToDisplay = indexPath.row; 
    if(shouldRemoveTheRow && indexPath.row >= theRowIndexToRemove) 

    { 
     theActualRowToDisplay = indexPath.row + 1; 
    } 
    theCellObject = [theArrayWithTheSectionContents objectAtIndex:theActualRowToDisplay]; 
} 

// now set up the cell with theCellObject 

return cell; 
    } 

希望這有助於你

+13

可能是我讀過的最雜亂的代碼 – Osa 2015-11-13 18:42:23

41

SWIFT你需要做兩件事情,

  1. 隱藏你的細胞。 (因爲可重複使用的單元格可能衝突)

  2. 將單元格的高度設置爲ZERO

在這裏看看,

  1. 隱藏你的細胞。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
        let myCell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cellID",for: indexPath) as! UITableViewCell 
    
        if(indexPath.row < 2){ 
         myCell.isHidden = true 
        }else{ 
         myCell.isHidden = false 
        } 
    
        return myCell 
    } 
    
  2. 細胞的設定高度,以ZERO

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
        var rowHeight:CGFloat = 0.0 
    
        if(indexPath.row < 2){ 
         rowHeight = 0.0 
        }else{ 
         rowHeight = 55.0 //or whatever you like 
        } 
    
        return rowHeight 
    } 
    

使用此您可以刪除重複使用的細胞發生衝突的問題。

對於cell?.tag,您也可以通過標記隱藏特定的單元格。

+0

更好的答案 – 2015-03-09 09:02:30

+0

當我使用這個我得到一個警告:「可能至少有一個在下面的約束列表是你不想要的。試試這個:(1)看看每個約束,並試圖找出你不期望的; (2)找到添加不需要的約束或約束的代碼並修復它「 – DrPatience 2015-09-01 14:17:02

+2

我不明白爲什麼需要隱藏單元格?如何將高度設置爲零會導致可重用單元格發生衝突? – 2015-09-15 15:03:22