searchDisplayController:更改标签“没有结果”(searchDisplayCo

2019-06-26 13:02发布

使用searchDisplayController时我如何更改标签“无结果”,?

问候

Answer 1:

这是不能直接访问,所以你必须做的老式方法,并通过你的子视图手动筛选searchDisplayController.searchResultsTableView 。 这里有一个例子:

UITableView *tableView = self.searchDisplayController.searchResultsTableView;
for( UIView *subview in tableView.subviews ) {
     if( [subview class] == [UILabel class] ) {
         UILabel *lbl = (UILabel*)subview; // sv changed to subview.
         lbl.text = @"My custom string";
     }
}

我不建议这一点,因为你依靠的内部行为searchResultsTableView比有可能会在某个时候发生改变,破坏你的应用程序更多。 打开一个bug /功能请求与苹果是去这里的好方法。



Answer 2:

我已经成功地通过永远不必查询结果为空去除的标签。

如果没有结果,因为他们是从服务器被提取,数据源重置为单行,并将它显示一个空白表视图单元格。

此外,使用逻辑来refeuse选择“虚拟”细胞:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row];
    if ([listItem isEqualToString:@""]) {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
}

我也认为有必要增加“虚拟”元逻辑到willSelect委托方法:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *listItem = [self.filteredListContent objectAtIndex:indexPath.row];
    if ([listItem isEqualToString:@""]) {
        return nil;
    }
    return indexPath;
}


文章来源: searchDisplayController: change the label “No Results”