Ознакомьтесь с примером кода в: [https://github.com/JayMarshal/GrabCasts.com-iPhone-Client/blob/master/CoreDataTableViewController.m][1]
Репо здесь: https://github.com/JayMarshal/Grabcasts
Это расширенная версия coredatatableviewcontroller курсов Stanford для iOS.
Ниже приведен соответствующий фрагмент этого кода:
- (void)createSearchBar {
if (self.searchKey.length) {
if (self.tableView && !self.tableView.tableHeaderView) {
UISearchBar *searchBar = [[[UISearchBar alloc] init] autorelease];
self.searchDisplayController
= [[UISearchDisplayController alloc] initWithSearchBar:searchBar
contentsController:self];
self.searchDisplayController.searchResultsDelegate = self;
self.searchDisplayController.searchResultsDataSource = self;
self.searchDisplayController.delegate = self;
searchBar.frame = CGRectMake(0, 0, 0, 38);
self.tableView.tableHeaderView = searchBar;
}
} else {
self.tableView.tableHeaderView = nil;
}
По сути, он присоединяет UISearchDisplayController к себе (который должен быть tableviewcontroller) как побочный эффект инициализации.Так что установка:
self.searchDisplayController.searchResultsDelegate = self;
self.searchDisplayController.searchResultsDataSource = self;
Вместо
myCon.searchResultsDataSource = self;
myCon.searchResultsDelegate = self;
Может быть, добьются цели.При отладке проверьте, указывают ли myCon и self.searchDisplayController на один и тот же объект?
Обновлено: в свойстве SDC TVC, по-видимому, обнаружена ошибка, которая не сохраняется в цикле выполнения.Подано как: http://openradar.appspot.com/10254897 также упоминается в SO, см. UIViewController не сохраняет созданный программным способом UISearchDisplayController