将搜索栏添加到 UIViewController 类

Posted

技术标签:

【中文标题】将搜索栏添加到 UIViewController 类【英文标题】:Add Search Bar to a UIViewController class 【发布时间】:2015-11-02 18:49:09 【问题描述】:

我想在我现有的 UIViewController 类中添加一个搜索栏。我使用 ios 8+ 并且总是调试我的应用程序我会收到一条错误消息。

我做到了:

.h

@interface mainViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, UISearchDisplayDelegate>

.m

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

    if (tableView == self.searchDisplayController.searchResultsTableView) 
        return [searchResultArray count];
    
    else
       return [self.fullArray count];
    


-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", searchResultArray];
    searchResultArray = [self.fullArray filteredArrayUsingPredicate:predicate];



-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

    [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles]objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];

    return YES;


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    

    if (tableView == self.searchDisplayController.searchResultsTableView) 
        cell.textLabel.text = [searchResultArray objectAtIndex:indexPath.row];
    
    else
        cell.textLabel.text = [self.fullArray objectAtIndex:indexPath.row];
    

但是代码会给我一个警告:

searchDisplayController is deprecated: first deprecated in iOS 8.0

我该如何解决这个问题?

【问题讨论】:

查看UISearchDisplayController 的文档。它会告诉你现在该做什么。 我发现了这个:developer.apple.com/library/ios/documentation/UIKit/Reference/… 但它并没有真正的帮助...... 怎么没用?您是否至少阅读了这些文档的第一段? 【参考方案1】:

UISearchDisplayController 已弃用,建议改用UISearchController

查看UIKit Catalog,了解如何在您的应用程序中使用UISearchController

【讨论】:

以上是关于将搜索栏添加到 UIViewController 类的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController 搜索栏在出现时向下移动

在部分uiviewcontroller,monotouch iphone中添加标签栏

将带有分页的 UIScrollView 添加到现有的 UIViewController

将 UIBarButtonItem 添加到 UIViewController 推送到 UINavigation 控制器

如何将子视图添加到 UIViewController 将 UINavigationBar 推到后面

UIViewController 内带有 UITableView 的搜索栏