iphone – 我可以在UISearchDisplayController中插入一个按钮吗?

当用户点击搜索栏时,没有输入任何文本,并且屏幕已经变暗(但是桌面视图还没有出现),我想在屏幕上放一个按钮以允许用户导航一些其他功能.那可能吗?

谢谢!

最佳答案 这非常棘手. _dimmingView对searchDisplayController是私有的,它高于所有子视图.您可以做的是每次出现时都用自定义视图覆盖它([searchString length] == 0和DidBeginSearch)

(tempView的框架是为放置在表的tableViewHeader上的UISearchBar设置的)

- (void)viewDidLoad {
    tempView = [[UIView alloc] initWith...];
    // tempView setup
    ...
}

- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
    [tempView setFrame:CGRectMake(0, self.searchDisplayController.searchBar.frame.size.height, 320, self.searchDisplayController.searchResultsTableView.frame.size.height)];
    [self.searchDisplayController.searchContentsController.view addSubview:tempView];
    ...
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    if ([searchString length] == 0) 
         [self.searchDisplayController.searchContentsController.view addSubview:tempView];
    else 
         [tempView removeFromSuperview];
    ...
}

- (void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller {
    if (tempView && tempView.superview) 
        [tempView removeFromSuperview];
    ...
}

注意:我尝试在DidBeginSearch上创建一个新实例并在DidEndSearch上发布它,它只适用于第一次调用!奇怪的…

希望这可以帮助

点赞