我正在制作像Facebook应用程序的左侧面板搜索功能。我有两个UITableViewControllers。当用户点击UISearchBar以显示搜索结果时,我从其中一个中获取tableView并将其放在另一个上面。当我创建第二个UITableViewController时,我告诉它在ViewDidLoad方法中它的分隔符样式是none:
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
然后,在我把它的tableView放在第一个UITableViewController的视图之上之后,它首先是空的,因为还没有数据输入到UISearchBar。而且没有任何分隔符。但是,当用户输入任何字母并且表格数据有一些记录时,分隔符样式将返回默认值(白线)。
因此,由于某种原因,我的第二个控制器忘记了,应该是分隔符样式,并在重新加载表视图分隔符后显示。 What can be the reason?
编辑: 这就是我创建第二个UITableViewController的方法,并将它的tableView放在第一个控制器的视图上:
- (UIView *)searchResultsView
{
if (! _searchResultsView) {
_searchResultsView = self.searchResultsViewController.tableView;
_searchResultsView.frame = CGRectMake(0, 44, 320, self.view.frame.size.height-44);
}
return _searchResultsView;
}
- (SearchResultsViewController *)searchResultsViewController
{
if (! _searchResultsViewController) {
_searchResultsViewController = [[SearchResultsViewController alloc] init];
_searchResultsViewController.searchBar = _searchBar;
}
return _searchResultsViewController;
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[self.view addSubview:self.searchResultsView];
}
屏幕截图:
当表视图没有数据时,它的外观如下:
如您所见,没有分隔符。
当有数据时,它就是它的样子。我删除了单元格内容。如你所见,有白色分隔符。
答案 0 :(得分:0)
尝试使用self.tableView.separatorColor = [UIColor clearColor];
答案 1 :(得分:0)
问题是我使用了UISearchController并且它创建了自己的tableView。所以我在那里甚至有3个tableViews。删除UISearchController及其委托方法后,一切都开始工作了。现在我从UISearchBar获取一个字符串并将其传输到我的第二个UITableViewController。那里不需要UISearchController。
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSString *searchString = [_searchBar.text stringByReplacingCharactersInRange:range withString:text];
self.searchResultsViewController.searchString = searchString;
return YES;
}
我在第二个UITableViewController中使用自定义setter for searchString:
- (void)setSearchString:(NSString *)searchString
{
_searchString = searchString;
[self filterContentForSearchText:searchString];
[self.tableView reloadData];
}