2016-01-07 4 views
-3

Привет, я использую UISerchbar в tableview, но есть ли простой способ создать пользовательский searchbar в tableview headerview?Пользовательская панель поиска в iOS

Я уже проверяю ссылку ниже, но я не понимаю.

Custom UISearchBar with UISearchController

How do I use the UISearchBar and UISearchDisplayController

Я добавил searchDisplayController:: enter image description here

И Это мой код для 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]; 
} 

Еще ее не работает

Заранее спасибо :)

+0

Я работал над этим в течение длительного времени и, наконец, решил, что было бы проще просто поместить строку поиска в представлении прямо над столом , С автоматическим выводом легко управлять позиционированием и получать заголовок для позиционирования в одном и том же месте в любое время, IIRC, была проблема. Я сдался. Удачи в поиске обходного пути (я думаю, что я был на ios7 в то время). – RegularExpression

ответ

0

Существует Everythings завершена, но есть это две маленькие ошибки.

1) удалить строку поиска из раскадровки.

2) Добавить [self.searchController.searchBar sizeToFit]; в viewDidLoad

Спасибо :))

Смежные вопросы