2016-01-04 63 views
1

我有一個tableView,可以成功顯示數據,現在我想要的是爲它提供搜索功能。 UISearchDisplayController在iOS 9中已被棄用,而我是iOS新手。所以請告訴我這樣做的方式。 如果任何人都可以一步一步地提供代碼,我很感激它,它也會幫助別人。這是我的tableView代碼。如何使用uisearchcontroller在ios 9中添加tableview的搜索選項,使用objectiveC

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [airportList count]; 
} 

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



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

    Details *newDetails = [airportList objectAtIndex:indexPath.row]; 

    cell.textLabel.text = newDetails.airport; 

    return cell; 

} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    Details *newDetails = [airportList objectAtIndex:indexPath.row]; 
    NSString *selectedText = newDetails.airport; 
    [[NSUserDefaults standardUserDefaults] setObject:selectedText forKey:@"st"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
+0

我發現本教程非常有幫助https://www.raywenderlich.com/113772/uisearchcontroller-tutorial – Seth

回答

19

您可以使用UISearchController iOS中9

首先聲明一個屬性爲UISearchController

@property (strong, nonatomic) UISearchController *searchController; 

然後,在viewDidLoad

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
self.searchController.searchResultsUpdater = self; 
self.searchController.dimsBackgroundDuringPresentation = NO; 
self.searchController.searchBar.delegate = self; 

在創建UISearchController我們並不需要一個單獨的搜索結果控制器,因爲我們將使用UITableViewController本身。 同樣,我們也將使用UITableViewController來更新搜索結果,方法是實施UISearchResultsUpdating協議。 我們不想調暗底層內容,因爲我們希望在用戶鍵入搜索欄時顯示過濾結果。 UISearchController負責爲我們創建搜索欄。 當用戶更改搜索範圍時,UITableViewController也將充當搜索欄代理。

接下來,添加searchBar到tableview中頭

self.tableView.tableHeaderView = self.searchController.searchBar; 

由於搜索視圖覆蓋表視圖活動時,我們讓UITableViewController定義表示上下文:

self.definesPresentationContext = YES; 

我們需要實現UISearchResultsUpdating代表隨時在搜索文本更改時生成新的過濾結果:

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController 
{ 
    NSString *searchString = searchController.searchBar.text; 
    [self searchForText:searchString scope:searchController.searchBar.selectedScopeButtonIndex]; 
    [self.tableView reloadData]; 
} 
+0

@Graham,它是我用來創建基於謂詞的過濾列表的自定義方法。您可以使用您需要的謂詞編寫自己的代碼。 – yogi

+0

@格拉漢姆,希望有所幫助。如果真的有幫助,請投票。 – yogi

+0

真棒..感謝您的回答 –

1

您可以通過Apple Sample Guide:Table Search with UISearchController瞭解更多。

「Table Search with UISearchController」是演示如何使用UISearchController的iOS示例應用程序。搜索控制器管理搜索欄的顯示(與結果視圖控制器的內容一致)。

相關問題