1

我正在制作类似 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];
}

截屏:

当表格视图没有数据时,它是这样的:

在此处输入图像描述

如您所见,没有分隔符。

当有数据时,这就是它的外观。我已删除单元格内容。如您所见,有白色分隔符。

在此处输入图像描述

4

2 回答 2

0

尝试self.tableView.separatorColor = [UIColor clearColor];

于 2013-04-02T10:25:14.200 回答
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 中为 searchString 使用自定义设置器:

- (void)setSearchString:(NSString *)searchString
{
    _searchString = searchString;

    [self filterContentForSearchText:searchString];

    [self.tableView reloadData];
}
于 2013-04-02T10:46:17.823 回答