2016-05-29 16 views

cevap

5

, bunları etkin bir şekilde görünmez hale sıfıra kendi yüksekliğini ayarlayabilirsiniz:

tablo görünümü denetleyicisi temsilci sınıfa bu yöntemi ekleyin:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    let cell = super.tableView(tableView, cellForRowAtIndexPath: indexPath) 
    return cell == myHiddenCell ? 0 : super.tableView(tableView, heightForRowAtIndexPath:indexPath) 
} 
didSelectCellAtIndexPath yöntemde
0

, bunu gizlemek için 0'a yüksekliğini ayarlayabilirsiniz:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if indexPath.row == 0 { 
     let indexPath = NSIndexPath(forItem: 1, inSection : 0) 
     let secondCell = tableview.cellForRowAtIndexPath(indexPath) 
     secondCell.frame.size.height = 0; 
     self.view.layoutSubviews() 
    } 
} 

Eğer bir animasyon istiyorsanız, sadecekoymak Bir UIView animasyon yöntemindekibir UIView.animateWithDuration ... vb

0

Benim için tüm hücrelerim farklı yüksekliğe sahip olduğundan, bazı hücreler için yüksekliği diğer hücreler için başka bir yüksekliğe ve başka bir yüksekliğe ayarlamak bir seçenek değildi.

Storyboard'da başka bir hücre oluşturdum ve satır yüksekliği 0 (boyut denetçisinde) olarak ayarlıyorum. Daha sonra kodu gizlemek istediğimde hücreyi height = 0 ile gösteririm, eğer diğer hücreyi gösterirse:

if (hideCell) { 
      let hiddenCell = tableView.dequeueReusableCell(withIdentifier: "hiddenCell",for: indexPath) as! TheWallTableViewCell 
      return hiddenCell 
     } 
else { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) as! TheWallTableViewCell 
     return cell 
} 
İlgili konular