UITableViewCell分隔符样式不会更改

时间:2013-04-02 09:36:12

标签: iphone ios uitableview

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

屏幕截图:

当表视图没有数据时,它的外观如下:

enter image description here

如您所见,没有分隔符。

当有数据时,它就是它的样子。我删除了单元格内容。如你所见,有白色分隔符。

enter image description here

2 个答案:

答案 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];
}