メモはテーブル画面で下に引っ張ると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 件のコメント:
コメントを投稿