UITableViewController を継承しないでUITableView の選択解除をする

投稿者: | 2012/04/23

UITableView で行選択をすると、その行がハイライト表示に変わります。

で、通常はUITableViewController を継承しているので、viewWillAppear の中で[super viewWillAppear:animated]; とやっておけば、ハイライト解除もちゃんと行われるのですが、自前のUIViewにUITableViewを放り込んで使っている場合などUITableViewController を使わずにUITableViewを使用する場合があります。

そんなとき、UITableViewの選択解除を行う方法です。

 

方法

viewWillAppear メソッドの中でdeselectRowAtIndexPathを呼んでやる。

こんな感じ。

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    UITableview* table = self.myTable;
    [table deselectRowAtIndexPath:[table indexPathForSelectedRow] animated:NO];

 

deselectRowAtIndexPath は選択状態を解除したい行のインデックスを要求してくるので、そこにindexPathForSelectedRow を使って「選択されている行のインデックス」を渡してやるのがポイント。

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータがどう処理されているか知りたい方はこちらをお読みください