私はこれを達成しようとしています:
ヘッダーに検索バーがあるテーブルビューについて考えてみます。テーブルビューは、文字列が検索されるたびに更新されます。
私は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のヘッダーにあります)、アプリがクラッシュすることです。