2011-01-21 4 views
1

appleが提供するデフォルトのNavigationControllerテンプレート。ナビゲーションコントローラーとテーブルが1つあります。navigationControllerがビューをポップするとき、選択されたセルの選択を解除しますか?

セルを選択すると、新しいビューがnavigationControllerにプッシュされ、ビューをポップすると、選択したセルが自動的にハイライトされなくなります。

しかし、どのようにしてhightlightを解除するのか、そしてどのセルが選択されているのかをテーブルがどのように知っていますか?

すべてのデータをもう一度読み込むだけですか?

答えて

6

どのようにテーブルがするデhightlightそれを知っているん

あなたは正しい選択ハンドラーであなたのセルの選択を解除することができます

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

またはコントローラの-viewWillAppear:方法

に選択をリセットします

どのセルが選択されているかはどのようにわかりますか?

のUITableViewは、行indexPath選択を取得するには、以下の方法があります。

- (NSIndexPath *)indexPathForSelectedRow 
+0

...それがお役に立てば幸いです。あなたはGENIUSです! – SeniorLee

0

についてはスウィフトこのコードは、同様クラッシュを避けることができます3.0

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(true) 
    if self.yourTableView.indexPathForSelectedRow != nil 
    { 
     self.yourTableView.deselectRow(at: self.yourTableView.indexPathForSelectedRow!, animated: true) 
    } 
} 

...

また、以下のli TableViewCellを選択している間に押している他のViewControllerのne。チャームのような

self.navigationController?.interactivePopGestureRecognizer?.isEnabled = true 

作品=]

はあなたに感謝

関連する問題