uisearchcontroller par stéphane sudre
TRANSCRIPT
Recherche
Recherche
Recherche
RechercheUISearchController
RecherchesearchBar 0,00 €
Recherche
searchResultsController
searchBar
searchResultsUpdater <UISearchResultsUpdating>
searchBar
searchResultsController
Recherche
<UISearchResultsUpdating>
dimsBackgroundDuringPresentation
searchBar
searchResultsController
searchResultsUpdater
Recherche
<UISearchResultsUpdating>
delegate <UISearchControllerDelegate>
searchBar
searchResultsController
searchResultsUpdater
dimsBackgroundDuringPresentation
Recherche
Exemple
0
2
4
6
8
10
12
14
16
18
20
Recherche
19:04Wanadoo E
@interface ACTableViewController () <UISearchResultsUpdating>{ ACResultsTableViewController *_resultsTableViewController; UISearchController *_searchController; NSArray *_array;}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (void)viewDidLoad { [super viewDidLoad]; NSMutableArray * tMutableArray=[NSMutableArray array]; for(NSUInteger tIndex=0;tIndex<100;tIndex++) [tMutableArray addObject:[@(tIndex*2) stringValue]]; _array=[tMutableArray copy]; _resultsTableViewController=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ACResultsTableViewController"]; _searchController = [[UISearchController alloc] initWithSearchResultsController:_resultsTableViewController]; _searchController.searchResultsUpdater = self; [_searchController.searchBar sizeToFit]; self.tableView.tableHeaderView = _searchController.searchBar; self.definesPresentationContext=YES;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
_searchController = [[UISearchController alloc] initWithSearchResultsController:_resultsTableViewController]; _searchController.searchResultsUpdater = self;
10
11
12
13
_searchController = [[UISearchController alloc] initWithSearchResultsController:_resultsTableViewController]; _searchController.searchResultsUpdater = self;
10
11
12
13
[_searchController.searchBar sizeToFit];13
14
15
self.definesPresentationContext=YES;}
17
18
19
Exemple
0
2
4
6
8
10
12
14
16
18
20
Recherche
19:06Wanadoo E
Exemple Recherche
0
2
4
6
8
10
12
14
16
18
20
Recherche
22
Annuler
19:06Wanadoo E
Q W E R T Y U I O P
A S D F G H J K L
Z X C V B N M
space123 Search☺
×
Tap sur Recherche
willPresentSearchController:
update…SearchController:
didPresentSearchController:
@""
delegate
delegate
searchResultUpdater
- (void)updateSearchResultsForSearchController:(UISearchController *)inSearchController { NSString *tSearchText = inSearchController.searchBar.text; NSArray * tResultsArray=[_array objectsAtIndexes:[_array indexesOfObjectsPassingTest:^BOOL(NSString * bNumber,NSUInteger bIndex, BOOL * bOutStop) { return ([bNumber rangeOfString:tSearchText].location!=NSNotFound); }]]; _resultsTableViewController.resultsArray=tResultsArray;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- (void)updateSearchResultsForSearchController:(UISearchController *)inSearchController { NSString *tSearchText = inSearchController.searchBar.text;
1
2
3
Exemple Recherche
0
10
20
30
40
50
60
70
80
90
100
0
102
Annuler
19:07Wanadoo E
Q W E R T Y U I O P
A S D F G H J K L
Z X C V B N M
space123 Search☺
×
Exemple Recherche
0
10
20
30
40
50
60
70
80
90
100
0
102
Annuler
19:07Wanadoo E
Action
Tap sur Annuler
willDismissSearchController:
update…SearchController:
didDismissSearchController:
@""
delegate
delegate
searchResultUpdater
Tap sur
update…SearchController:
update…SearchController: @""
@""
searchResultUpdater
searchResultUpdater
Exemple 2
0
2
4
6
8
10
12
14
16
18
20
Filtrage
19:08Wanadoo E
@interface ACTableViewController () <UISearchResultsUpdating>{ UISearchController *_searchController; NSArray *_originalArray; NSArray *_visibleArray;}
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (void)viewDidLoad { [super viewDidLoad]; NSMutableArray * tMutableArray=[NSMutableArray array]; for(NSUInteger tIndex=0;tIndex<100;tIndex++) [tMutableArray addObject:[@(tIndex*2) stringValue]]; _originalArray=[tMutableArray copy]; _visibleArray=_originalArray; _searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; _searchController.searchResultsUpdater = self; _searchController.dimsBackgroundDuringPresentation=NO; [_searchController.searchBar sizeToFit]; _searchController.searchBar.placeholder=NSLocalizedString(@"Filter", @""); self.tableView.tableHeaderView = _searchController.searchBar; self.definesPresentationContext=YES;}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; _searchController.searchResultsUpdater = self;
9
10
11
12
_searchController.dimsBackgroundDuringPresentation=NO;12
13
14
Exemple 2
0
2
4
6
8
10
12
14
16
18
20
Filtrage
19:09Wanadoo E
Exemple Recherche
0
2
4
6
8
10
12
14
16
18
20
Filtrage
22
Annuler
19:09Wanadoo E
- (void)updateSearchResultsForSearchController:(UISearchController *)inSearchController { NSString *tSearchText = inSearchController.searchBar.text; if ([tSearchText length]>0) { NSArray * tResultsArray=[_originalArray objectsAtIndexes:[_originalArray indexesOfObjectsPassingTest:^BOOL(NSString * bNumber,NSUInteger bIndex, BOOL * bOutStop){ return ([bNumber rangeOfString:tSearchText].location!=NSNotFound); }]]; _visibleArray=tResultsArray; } else { _visibleArray=_originalArray; } [self.tableView reloadData];}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Références
Exemples de codes.sudre.free.fr/Stuff/CocoaHeads/UISearchControllerSimpleCode.zip
github.com/dempseyatgithub/Sample-UISearchController
Session WWDC
A Look Inside Presentation Controllers - Session 228 - WWDC14
developer.apple.com/library/ios/samplecode/UICatalog
Q A&