8

私はこれを達成しようとしています:

ヘッダーに検索バーがあるテーブルビューについて考えてみます。テーブルビューは、文字列が検索されるたびに更新されます。

私は2つのクラスを持っています

TableViewController(UIViewControllerサブクラス)

UITableViewが含まれています-これは、そのテーブルを示しています

テーブルのヘッダービューは、ヘッダークラ​​ス(UIToolBarサブクラス)から読み込まれます。

ヘッダー(UITableViewのヘッダー)
-UISearchBarとそのデリゲートが含まれています

The

UISearchBarDelegatesはTableViewControllerの関数をコールバックします

それは

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

これによりアプリがクラッシュします

関数呼び出しスタックフレームは次のとおり です

[UITableView reloadSections:withRowAnimation:]  
[TableViewController functionThatCallsReloadSection]  
[Header searchBarSearchButtonClicked:]  

reloadSectionが原因でアプリがクラッシュします。なぜそうなるのか考えてみてください。

テーブルビューヘッダーがリロードされている間、デリゲート関数がスタック上でまだアクティブであるためですか?

テーブルビューに関連するものは何も変更していません(行やセクションの数は変更していません)。私がやろうとしているのは、テーブルビューをリロードすることだけです。

編集:私はiPadでこれらすべてのことをしようとしていますが、これは使用したくないUISearchDisplayControllerを使用しているときにポップオーバーを提供します。テキストが入力されて検索ボタンが押されたら更新したいテーブルビューがすでにあります。検索デリゲート。唯一の問題は、UISearchBarの検索デリゲートで[UITableView reloadSection:]を呼び出すと(UISearchBarはリロードするUITableViewのヘッダーにあります)、アプリがクラッシュすることです。

4

1 に答える 1

1

テーブルビューヘッダーに初期化されたポインターを使用したテーブルビューヘッダーデリゲートメソッドを使用してテーブルビューヘッダーをロードする代わりに、tableViewHeaderを使用することで、問題を修正できました。

于 2012-03-22T10:36:36.080 に答える