6

我想将 UISearchBar 添加到已经有标题视图的 UITableView 中。当我尝试将搜索栏添加到现有标题视图时,它会一直工作,直到我点击它,此时我得到The view hierarchy is not prepared for the constraint,这似乎是因为搜索栏不是 tableview 的直接子视图,所以当 UISearchController 尝试更新时它不能的约束。

我发现解决此问题的唯一方法是将表格视图标题设为搜索栏,然后一切正常,但当然我会丢失已经在标题视图中的其他视图。

4

1 回答 1

4

为了避免这种行为,我将搜索栏放在了一个容器中UIView。将约束应用于此容器视图,并为容器内的搜索栏使用自动调整大小的掩码。

// Configure header view
UIView *headerView = ...
...

// Create container view for search bar
UIView *searchBarContainer = [UIView new];
searchBarContainer.translatesAutoresizingMaskIntoConstraints = NO;
[searchBarContainer addSubview:self.searchBar];
[headerView addSubview:searchBarContainer];
self.searchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

// Apply constraints involving searchBarContainer
[headerView addConstraint: ...];
...

// Then add header to table view
self.tableView.tableHeaderView = headerView;
于 2014-12-16T21:46:06.130 回答