2016-05-09 14 views
1

私はUITableviewセクションとインデックスのタイトルを持っています。ユーザーがセルをクリックすると、高さ42のオプションビューがそのセルに表示されます。そのオプションを表示するには、セルをリロードします。しかし、セクションヘッダーも更新されています。それは奇妙なアニメーションを与える。 heightForHeaderInSectionviewForHeaderInSectionのような他のデリゲートメソッドを呼び出さずに、セルだけをリロードする方法。リロードUITableViewヘッダーセクションを再ロードせず

+0

テーブルビューをリロードするためにあなたが書いたコードです。そして、まさにあなたがしたいこと。セルまたはセクションのみをリロードしますか? –

+0

'begin/endupdate'を使ってセルをリロードする –

答えて

1

私はそれはあなたを助けるかもしれない

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 

    [tableView beginUpdates]; 
    [tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 
    [tableView endUpdates]; 

} 

以下のコードを試してみてください、あなただけindexPathのための特定の行を更新するべきだと思います。

乾杯。スイフト2.0 &で

1

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     tableView.beginUpdates() 
     tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) 
     tableView.endUpdates() 

     } 
2

上記テーブルビューを再ロードするためのいくつかの方法があります。

  1. セクションのセルを含むセクション全体をリロードします。

    - (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

例:

[tableVIewContent reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationAutomatic]; 
  • 単一/複数のセル

    - (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath >)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

  • をリロードします

    例:

    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationFade]; 
    
    全体のテーブルビューをリロードするには
  • <オール= "3" を起動>。

    - (void)reloadData;

    //最初からすべてを再ロードします。可視の行を再表示します。可視の行についての情報しか保持しないので、これは安いです。テーブルが縮小した場合にオフセットを調整します

  • 関連する問題