7745


下記の様に書くと、cellが元々あった場所はそのまま確保されていて、backgroundが露出してしまいます。  
非表示にしたcellがあった場所は上詰めで下のcellが上がって欲しいです。

[code]

    [_targetCell  setHidden:YES];
    [[self tableView] reloadData];
    
[/code]


CC BY-SA 3.0
2015-03-10T09:29:40.057
7724
2015-03-11T01:20:05.160
2015-03-10T10:11:33.537
525
525
question
ios uitableview
UITableViewで特定のCellを非表示にしたい。


内部的には非表示処理でも、`UITableView`上では削除として扱うべきかと。  
なので`UITableViewDataSource`の行を削除状態にしてから`deleteRowsAtIndexPaths:withRowAnimation:`を呼べばいいと思います。


CC BY-SA 3.0
2015-03-10T11:18:10.873
7733
2015-03-10T11:18:10.873
5750
7724
answer


自分が以前に自己解決した質問を載せておきます。

[UITableViewの特定セクションの特定のCellを特定条件で隠したい](https://ja.stackoverflow.com/questions/6956/uitableview%E3%81%AE%E7%89%B9%E5%AE%9A%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%AEcell%E3%82%92%E7%89%B9%E5%AE%9A%E6%9D%A1%E4%BB%B6%E3%81%A7%E9%9A%A0%E3%81%97%E3%81%9F%E3%81%84/6959#6959)


CC BY-SA 3.0
2015-03-10T12:04:55.277
7734
2015-03-10T12:04:55.277
2017-04-13T12:52:39.113
-1
3496
7724
answer


これは、Q1 セルの存在条件が無くなったのか? Q2 Q1がyesなら、なぜ、datasourceは、それを反映できないのか? Q3
Q1がNoだが、あえてそのセルを非表示にしたいのか？

のquestionに回答できないと、正確な解答はできないと思います。  
Q1:No Q3:Yes なら、Collapsible TableViewのたぐいの操作が必要なんじゃないかと。  
Collapsible TableViewは、Appleから、TV Animations and Gestures
という有名なサンプルコードが出ています。結構、面倒くさいですが。


CC BY-SA 3.0
2015-03-11T00:30:20.533
7742
2015-03-11T00:30:20.533
75
7724
answer


0xfffffff7さんの解答を元に解決しました。cellがhiddenならheightを0にしました。

[code]

    - (void)viewDidLoad {
      [super viewDidLoad];
      [_targetCell  setHidden:YES];
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    
      UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
    
      if( cell.hidden ){
        return 0;
    
      } else {
        return [super tableView:tableView heightForRowAtIndexPath:indexPath];
      }
    }
    
[/code]


CC BY-SA 3.0
2015-03-11T01:20:05.160
7745
2015-03-11T01:20:05.160
525
7724
answer