UISearchDisplayController
在 a中使用 a时UITableViewController
,记住您正在处理两个表视图非常重要。
因此,当您将“搜索栏和搜索显示控制器”拖动到 aUITableView
中(并假设您在 a 中进行此拖动UIStoryboard
)时,实际上会添加另一个UITableView
,当激活时,它必须由UITableViewController
文件中的代码以与任何其他UITableView
.
考虑一下:
代表完整数据集的 UITableView 可以使用self.tableView
(或者如您所写的,综合_tableView
)调用。
代表过滤数据集(使用您的搜索条件过滤)的 UITableView 可以使用调用self.searchDisplayController.searchResultsTableView
如果您希望默认UITableView
和搜索UITableView
背景颜色都显示黑色,我可以建议此代码(在我的应用程序的 TVC 中工作)...
- (void)viewDidLoad {
[super viewDidLoad];
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor blackColor]];
[self.searchDisplayController.searchResultsTableView setBackgroundView:nil];
[self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor blackColor]];
}
...
更新
现在我已经完成了我冗长的讲座,我同意 Xcode 中实际上存在某种“错误”。如果您删除原始文件UISearchBar
,然后将新文件添加到 a UITableViewController
,则在连接之前,请执行 Build & Run。在表格视图的下方和上方可以看到黑色背景。只有在您将 设置UISearchBar
为 的出口后UISearchDisplayController
,黑色背景才会被灰色背景“替换”。
所以解决方案...
感谢Olof对 UITableView 顶部和底部的不同背景颜色的回答。
viewDidLoad
在你的方法结束时,用这段代码替换我上面写的代码:
- (void)viewDidLoad {
[super viewDidLoad];
...<other code>...
CGRect frame = self.tableView.bounds;
frame.origin.y = -frame.size.height;
UIView* viewBackgroundBlack = [[UIView alloc] initWithFrame:frame];
[viewBackgroundBlack setBackgroundColor:[UIColor blackColor]];
[self.tableView addSubview:viewBackgroundBlack];
[self.tableView setBackgroundView:nil];
[self.tableView setBackgroundColor:[UIColor blackColor]];
[self.searchDisplayController.searchResultsTableView setBackgroundView:nil];
[self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor blackColor]];
}