メモはテーブル画面で下に引っ張るとSearchBarがでてきて、検索ができます。Storyboardでやっているので、Search Bar and Search Display Controller を追加します。
間違えて一度SearchBarを追加して消してやり直したりしていたら、Storyboardがしばらくおかしくなっていてしばらくはまりました。
- Storyboardから一度どちらも消す
- プロジェクトを閉じる
- Storyboardのファイル(xml)をエディタで開いて、SearchBarぽいやつを全部消す
等々でやっと解決。
Cocoaの日々: UISearchDisplayController と NSFetchedResultContoller を組み合わせる (3) 考察 をみたり、諸々をみて色々やって、できたー!
と思いきや、行をタップしたときがうまくいきません。didSelectRowAtIndexPath は反応しているのですが、はて、segue で画面遷移しているから、何かしないとだめなんではないかとあれこれしらべて、以下のようなのを追加してみました。
if(tableView == self.searchDisplayController.searchResultsTableView) {
[self performSegueWithIdentifier:@"showDetail" sender:self];
}
検索結果だったら、segueを実行するようにするらしいです。。かつ、prepareForSegue のほうで、以下のような分岐をいれます。 if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath;
if([self.searchDisplayController isActive]) {
indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
} else {
indexPath = [self.tableView indexPathForSelectedRow];
}
Memo *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
[[segue destinationViewController] setDetailItem:object];
}
[[segue destinationViewController] setManagedObjectContext:self.fetchedResultsController.managedObjectContext];
これで動くようになった(?)のですが、行った先で編集してデータを更新すると、その時点で何かエラーがでています。。もどってきても再検索できません。。。
0 件のコメント:
コメントを投稿