Я столкнулся с тем же.Я создаю все мои контроллеры / представления программно.Все работало нормально, пока я не перевел свой проект на использование ARC.Как только я это сделал, UISearchDisplayControllers
больше не сохранялось, а свойство searchDisplayController
в каждом UIViewController
было нулевым после окончания цикла выполнения.
У меня нет ответа, почему это происходит.Документы Apple предполагают, что SDC должен быть сохранен контроллером представления, но это явно не происходит.
Мое решение состояло в том, чтобы создать второе свойство, чтобы сохранить SDC, и я обнуляю его, когда выгрузил представление.Если вы не используете ARC, вам нужно выпустить mySearchDisplayController
в viewDidUnload
и dealloc
.В противном случае это хорошо, как есть.
В MyViewController.h:
@property (nonatomic, strong) UISearchDisplayController * mySearchDisplayController;
В MyViewController.m:
@synthesize mySearchDisplayController = _mySearchDisplayController;
- (void)viewDidLoad
{
[super viewDidLoad];
// create searchBar
_mySearchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
_mySearchDisplayController.delegate = self;
_mySearchDisplayController.searchResultsDataSource = self;
_mySearchDisplayController.searchResultsDelegate = self;
// other stuff
}
- (void)viewDidUnload
{
[super viewDidUnload];
_mySearchDisplayController = nil;
// other stuff
}