以编程方式将UISearchBar添加到普通ViewController中以编程方式添加的UITableView

时间:2013-06-11 22:45:31

标签: objective-c uitableview uisearchbar uisearchdisplaycontroller

我有一个非常特殊的要求。由于不同的情况,没有教程或已经问过的问题对我有效。它的特殊之处在于我希望在不重新编程所有代码的情况下增强现有应用程序。

我想以编程方式添加UISearchbar。 应将搜索栏添加到以编程方式添加的UITableView中。

这一切都发生在普通的UIViewController中。

我当前的方法显示了搜索栏,但它不在我的UITableView中搜索。 简直没有任何反应。

我做错了什么?

myTableView    =   [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];

UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchBar.delegate = self;

myTableView.tableHeaderView = searchBar;

UISearchDisplayController *searchController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
searchController.delegate = self;

myTableView.dataSource      =   self;
myTableView.delegate        =   self;

[self.view addSubview:myTableView];

2 个答案:

答案 0 :(得分:2)

您的对象是否在UISearchDisplayDelegate中实现了委托方法?

换句话说,您必须定义在搜索栏中输入文本时会发生什么,它不会自动发生。

答案 1 :(得分:1)

除了确保您的ViewController符合UISearchBarDelegate之外,还是这样:

@interface YourViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate>

你应该实现以下方法

- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    [self.view endEditing:YES];
    // do search here
}