Я не думаю, что вы можете создать подкласс UISearchDisplayController и заставить его работать правильно. Он делает много вещей в методах, которые не являются публичными, поэтому вы не сможете переопределить их с правильным поведением.
Однако вы можете использовать встроенный UISearchDisplayController с вашими пользовательскими ячейками таблицы в результатах поиска, как есть. Вам необходимо инкапсулировать создание и настройку пользовательских ячеек так, чтобы они работали в любом табличном представлении, просто переопределив -... cellForRowAtIndexPath (это стандартный метод отображения пользовательских данных в табличном представлении). Убедитесь, что контроллером является UISearchDisplayDelegate, и он будет использовать этот метод для создания строк в списке поиска.
Чтобы установить пользовательскую высоту, установите
- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)searchTableView
, чтобы установить rowHeight в searchTableView.