iOS 中的自定义搜索栏

Posted

技术标签:

【中文标题】iOS 中的自定义搜索栏【英文标题】:Custom Searchbar in iOS 【发布时间】:2016-01-07 06:30:23 【问题描述】:

您好,我在tableview 中使用UISerchbar,但有什么简单的方法可以在tableview headerview 中创建自定义searchbar

我已经检查了下面的链接,但我不明白。

Custom UISearchBar with UISearchController

How do I use the UISearchBar and UISearchDisplayController

我添加了 searchDisplayController : :

这是我的 searchController 代码,

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
    self.searchController.searchResultsUpdater = self;
    self.searchController.dimsBackgroundDuringPresentation = NO;
    self.searchController.searchBar.delegate = self;
    self.definesPresentationContext = YES;
    [self.searchController.searchBar setBarTintColor:[UIColor darkGrayColor]];
    self.tableView.tableHeaderView = self.searchController.searchBar;

我也为UISearchBarDelegate,UISearchResultsUpdating 设置了委托,

并实现了他们的方法,

    - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope

    if (_searchController.isActive && _searchController.searchBar.text.length >0)

        NSPredicate *resultPredicate = [NSPredicate
                                        predicateWithFormat:@"SELF.name contains[cd] %@",
                                        searchText];

        abcd = [sortedEventArray  filteredArrayUsingPredicate:resultPredicate];
        NSLog(@"%@",searchResults);

    




- (void)updateSearchResultsForSearchController:(UISearchController *)searchController1

    NSString *searchString = searchController1.searchBar.text;
    [self filterContentForSearchText:searchString scope:@"abc"];
    //[self filterContentForSearchText:searchString :@"abc"];
    [self.tableView reloadData];

取消按钮事件

    - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar

      abcd=[sortedEventArray mutableCopy];
      [_tableView reloadData];





   -(void)delete


    NSManagedObjectContext *context = [self managedObjectContext];
    NSFetchRequest * allMovies = [[NSFetchRequest alloc] init];
    [allMovies setEntity:[NSEntityDescription entityForName:@"Data" inManagedObjectContext:context]];
    [allMovies setIncludesPropertyValues:NO]; //only fetch the managedObjectID

    NSError * error = nil;
    NSArray * movies = [context executeFetchRequest:allMovies error:&error];
    //error handling goes here
    for (NSManagedObject * movie in movies) 
        [context deleteObject:movie];
    
    NSError *saveError = nil;
    [context save:&saveError];

还是不行

提前致谢:)

【问题讨论】:

我为此工作了很长时间,最后决定将搜索栏放在桌子正上方的视图中会更容易。使用自动布局,很容易控制定位并将标题始终定位在同一位置,IIRC 是问题所在。我放弃了。祝你好运找到解决方法(我想我当时在 ios7 上)。 【参考方案1】:

一切都完成了,但我有两个小错误。

1) 从 Storyboard 中删除搜索栏。

2) 添加[self.searchController.searchBar sizeToFit];viewDidLoad

谢谢:))

【讨论】:

以上是关于iOS 中的自定义搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在 vue.js 中的自定义搜索过滤器不起作用?

Oracle APEX 4.2 经典报告中的自定义搜索

Flex 4中的自定义视频搜索栏控制[关闭]

键盘 Swift 上的自定义键

iOS 搜索栏不显示结果

iOS NavigationBar 导航栏自定义