Ответ 1
Я столкнулся с тем же. Я создаю все мои контроллеры/представления программно. Все работало нормально, пока я не превратил свой проект в использование 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
}