2017-10-24 9 views
2

クラッシュサイクラによると、次のクラッシュが発生しています(まれに)。iOS UISearchControllerクラッシュ:アプリケーションがモーダルビューコントローラをそれ自体に表示しようとしました

アプリケーションがモーダルビューコントローラを表示しようとしました。 プレゼンテーションコントローラはです。

この問題はまったく複製できません。これが私のUISearchコントローラを設定する方法です。

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    self.searchController.dimsBackgroundDuringPresentation = NO; 
    self.searchController.searchBar.delegate = self; 

    self.tableView.tableHeaderView = self.searchController.searchBar; 
    self.definesPresentationContext = YES; 

私はすべてのアイデアがないので、助けてください。私は必要に応じてさらにコードを投稿します。

+0

のように私のやった選択方法に、NO =助けましたか?問題のView Controllerをどこに提示しようとしていますか? – mckeejm

+0

あなたの設定は標準です - エラーの原因となる遷移など、あなたを助けるためにさらに多くのコンテキストが必要です。デバッガで例外をトラップできますか?このようなエラーは、現在の検索を変更しようとするUISearchControllerDelegateメソッドのアクションによって発生しています。 –

答えて

6

私はiOS 11にアップデートしたときにこの問題を抱えていました。 私はTextfieldを持っていましたが、ユーザがそれを編集し始めたとき、検索ビューは基本的に、一旦テーブルビューセルがタップされると、それは閉じるべきである。

iOS 11以降、OSはfirstResponder状態を復元しようとしているようです。長い話が短い。

私はアクティブ追加したときには、実際にそれをクラッシュしているものをラインので

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    self.searchController.active = NO; // Add this ! 
    ... 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

奇妙なことに、この「アクティブ= NO」は私のためにクラッシュを引き起こしたものでした。行を削除すると、私のアプリはもはやクラッシュしませんでした。これを書いたのは2017年12月19日でした。Appleが最新のアップデートで修正したのかもしれません。 – Zhang

関連する問題