UISearchDisplayController, не работающий при создании в коде?

Я работаю над приложением панели вкладок, и одной из вкладок сцепили UISearchDisplayController до UISearchBar. Это все соединено в NIB и работает. Когда я касаюсь панели поиска, Объема и мухи Кнопок отмены в и т.д., и поисковый делегат обновляет таблицу результатов правильно.

Однако я пытаюсь реализовать тот же код в viewDidLoad сообщение вместо NIB, однако когда я удаляю поисковый контроллер отображения из NIB и некомментирую мой код для создания того же контроллера в функции, это не работает. Это - как будто существует некоторое фундаментальное соединение, не сделанное так, чтобы всю мою поисковую функциональность делегата не называли.

Вот моя рабочая версия NIB Поискового Контроллера отображения. Это сцепляется до панели поиска, UINavigationController подкласс (MASearchController) и корневое представление этого поднято трубку как searchContentsController.

сопроводительный текст http://img192.imageshack.us/img192/3050/screenshot20100307at304.png

Теперь это - то, что Вы ожидали бы делать в коде для создания того же, правильно? То, что я делаю, покидает UISearchBar в NIB для устранения одной части загадки за один раз в коде.

// [MASearchController viewDidLoad]
UISearchDisplayController *searchController = [[[UISearchDisplayController alloc]
    initWithSearchBar:searchBar
    contentsController:[[self viewControllers] objectAtIndex:0]] autorelease];
[searchController setDelegate:self];
[searchController setSearchResultsDelegate:self];
[searchController setSearchResultsDataSource:self];

Я проверил все объекты во время выполнения, и они все проверяют. По существу я удалил поисковый контроллер отображения из NIB и затем вставил код для создания его в viewDidLoad сообщение.

Почему это не работало бы? Поисковая клавиатура подходит, но ни один из моего поиска и работы функциональности анимации кнопки???

7
задан Nick Bedford 7 March 2010 в 05:14
поделиться

1 ответ

Вау, я только что понял проблему.

Я подумал, поскольку свойство searchDisplayController для UIViewController установлено внутри сообщения initWithSearchBar: contentsController:, я бы все равно автоматически выпустил свою копию указателя, но когда я удалил автозапуск , глупая вещь начала работать. Гааааа. Почему бы ему не сохранить свою собственную копию (UIViewController)?

9
ответ дан 6 December 2019 в 19:36
поделиться