1

文字列の長いリストを含むテーブルビューがあります。各セクションのヘッダー、右側にあるインデックス、および検索ボタンがあります。これは、UISearchDisplayController を使用してプログラムで実装されています (つまり、IB にはありません)。

検索ボタンがアクティブになると、ヘッダー ( titleForHeaderInSection) を非表示にし、インデックス ( sectionIndexTitlesForTableView)を非表示にします。
if ([self.searchDisplayController isActive])

問題は、キャンセル ボタンをクリックすると、最初はヘッダーとインデックスが非表示のままになることです。(でsearchBarCancelButtonClicked) を呼び出そうとしまし[self.tableView reloadData]たが、うまくいきません。

行を選択[self.tableView reloadData]viewWillAppear、別のビューをスタックにプッシュしてから、このテーブルに戻ると、必要なヘッダーとインデックスが存在します。

私は何を間違っているのでしょうか?

4

1 に答える 1

0

[tableView reloadData] が機能しない場合、これを行うと次のようになることがあります。

[tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0];

なんらかの理由で、リロードが有効になる前に、実行ループの次の反復まで待たなければならないような状態になることがあります。

于 2011-02-11T20:47:27.363 に答える