UISearchDisplayController
предназначен только для для использования с другим UIViewController
(contentsController
, как вы упомянули). Хотя он может использоваться с любым UIViewController
, его основное использование (и наименее болезненное использование) предназначено для использования с UITableViewController
.
Предполагается, что contentsController
"отвечает за управление исходным контентом, который нужно найти". Если контроллер не управляет коллекцией элементов, искать нечего. UITableView
является основным стандартным контроллером, который управляет несколькими элементами.
Если ваш UISearchBar
находится в UIToolbar
, панель инструментов, скорее всего, находится в главном представлении, которым управляет UIViewController
. Если вы программно получаете доступ к значению contentsController
, доступному только для чтения, во время выполнения, я ожидаю, что вы найдете его.
Xcode4 (и, вероятно, InterfaceBuilder) создает множество соединений, когда вы просто помещаете этот контроллер поиска в кончик. Теперь они указывают на этого UIViewController
(владельца файла?) И ожидают, что он реализует некоторые из совершенно дополнительных методов в протоколах UISearchBarDelegate
и UISearchDisplayDelegate
.
Вы, вероятно, хотите реализовать
- (void)searchBar:(UISearchBar *)searchBar
textDidChange:(NSString *)searchText {
// called when text changes (including clear)
NSLog(@"[%@ %@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd));
}
на тайне contentsController
и выполнять веялку каждый раз, когда набирается текст?
(удачи)
Я подозреваю, что вы, возможно, вообще не захотите использовать UISearchDisplayController
в миксе для этого.