0

UITableview の tableHeaderView で UISearch バーを使用しようとしています。この検索機能は iOS 6 では問題なく動作しましたが、7.0 SDK に対してビルドして以来、別のビューから戻った後に検索バーをタップするとクラッシュします。検索 tableView を初めて表示すると、検索バーは期待どおりに機能します。しかし、詳細ビューにドリルダウンすると、検索バーをタップすると、exc-bad-access 例外がスローされます。この不正なアクセスは、私のスキームで NSZombies を使用することでログに記録されません。ヘッダー ビューを設定するコードは次のとおりです。

    self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
    self.searchController = [[UISearchDisplayController alloc]
                             initWithSearchBar:self.searchBar contentsController:self];
    self.searchController.delegate = self;
    self.searchController.searchResultsDataSource = self;
    self.searchController.searchResultsDelegate = self;

    self.tableView.tableHeaderView = self.searchBar;

プロパティself.searchBarとプロパティself.searchControllerはどちらも強参照として宣言されています。メモリがないという警告はどこでも受け取られています。iOS 7 の UISearchBar または tableHeaderView で何か変更がありましたか? また、UISearchBar に外観プロキシを適用していることも注目に値するかもしれませんが、最初の読み込みでは正しく表示され、機能します。

4

2 に答える 2

0

UITableViewController が破棄される前に、UISearchDisplayController を非アクティブとして設定し始めるまで、iOS7 で UISearchBar がクラッシュするという問題がありました。以下を追加するとうまくいきましたが、問題が関連しているかどうかはわかりません。

[_mySearchDisplayController setActive:NO];
于 2013-09-25T00:08:11.200 に答える
0

クラッシュはsectionIndexTitlesForTableViewa と一緒に使用したことが原因であることがわかりましたUISearchDisplayController(この質問を参照してください)。これは iOS 7 SDK のバグのようです。代わりに、サードパーティの代替品としてCMIndexBarを使用しています。ネイティブのセクション インデックスと同じように機能し、クラッシュすることはなく、簡単にカスタマイズできます。

于 2013-09-25T16:31:14.827 に答える