2016-05-29 4 views
5

記事で明示的に説明しているクエリはありません。静的なテーブルに3つのセルがあり、ユーザーが最初のセルをタップすると2番目のセルを非表示にしたいと考えています。どんな種類の助けにも感謝します。あなたはあなたの細胞を表示しようとしているから、静的なテーブルを止めることはできませんが、あなたがそれらを効果的に見えなくなって、ゼロにその高さを設定することができます静的UItableview内の特定のセルをすばやく非表示にするにはどうすればいいですか?

+0

なぜこのダウンが投票されたのですか? – coolly

答えて

5

あなたのテーブルビューコントローラのデリゲートクラスにこのメソッドを追加します。

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方法で
0

、あなたはそれを隠すために0に高さを設定することができます

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() 
    } 
} 

アニメーションをしたい場合は、単にを置きますのUIViewアニメーションメソッドUIView.animateWithDuration ...など

0

私の場合、一部のセルでは高さを設定し、他のセルでは高さを設定するオプションはありませんでした。

ストーリーボードに別のセルを作成し、行の高さを0(サイズインスペクタで)に設定しました。コードでは、高さ= 0のセルを非表示にしたい場合は非表示にし、そうでなければ他のセルを表示します。

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 
} 
関連する問題