0

我有一个 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

4

0 回答 0