iOS以编程方式添加了UITableView和UISearchDisplayController

时间:2014-12-12 13:16:19

标签: ios uitableview uisearchbar uisearchdisplaycontroller uisearchresultscontroller

我有一个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中,并且最终会出现在滚动视图中有滚动视图时出现的奇怪的人工制品。

我发现,如果我将searchBar添加到tableView中,我就不会遇到这个问题:

self.testTableView.tableView.tableHeaderView = self.searchBar;

而不是:

[self.view addSubview:self.searchBar];

但这会导致其他问题(在searchBar上方,searchBar会滚动内容)。

此外: - 我无法使用新的UISearchController - 我无法使用故事板来实现这个

有没有人知道这里可能有什么问题?也许上面的代码中存在问题。

您可以在此处下载示例项目: http://www.file-upload.net/download-9987146/SearchTableViewTest.zip.html

0 个答案:

没有答案