我正在开发一个标签栏应用程序,其中一个标签有一个连接到 UISearchBar 的 UISearchDisplayController。这一切都在NIB中连接起来并且正在工作。当我点击搜索栏时,Scope 和 Cancel 按钮会飞入等,并且搜索委托会正确更新结果表。
但是,我试图在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
消息中创建它。
为什么这行不通?搜索键盘出现但我的搜索和按钮动画功能都不起作用???