我有一个 UIViewController,我想在其中添加一个 UITableView 和一个 UISearchBar。UISearchBar 不应添加到 tableView 中,而应位于 tableView 上方。
我为包含的 viewController 提出了这个实现:
- (void)viewDidLoad {
[super viewDidLoad];
self.testTableView = [[TestTableViewController alloc] init];
self.testTableView.edgesForExtendedLayout = UIRectEdgeNone;
self.searchBar = [[UISearchBar alloc] init];
self.searchBar.delegate = self.testTableView;
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self.testTableView];
self.searchController.delegate = self.testTableView;
self.searchController.searchResultsDataSource = self.testTableView;
self.searchController.searchResultsDelegate = self.testTableView;
self.searchBar.frame = CGRectMake(500.0f, 70.0f-44.0f, 500.0f, 44.0f);
self.testTableView.view.frame = CGRectMake(500.0f, 70.0f, 500.0f, 500.0f);
// add views
[self.view addSubview:self.testTableView.view];
[self.view addSubview:self.searchBar];
}
TestTableViewController 基本上是一个带有一些虚拟数据的普通 TableViewController。
这似乎工作正常,但是当我进行搜索时,似乎 searchResults tableView 已添加到原始 tableView 中,当您在滚动视图中有滚动视图时,我最终会出现奇怪的伪影。
我观察到如果我像这样将 searchBar 添加到 tableView 中,我没有这个问题:
self.testTableView.tableView.tableHeaderView = self.searchBar;
代替:
[self.view addSubview:self.searchBar];
但这会导致其他问题(搜索栏正上方的行,搜索栏随内容滚动)。
另外: - 我不能使用新的 UISearchController - 我不能使用故事板来实现这个
有谁知道这里可能出了什么问题?可能上面的代码有问题。
您可以在此处下载示例项目: http ://www.file-upload.net/download-9987146/SearchTableViewTest.zip.html