SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
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 code
s.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
QA&

Contenu connexe

Tendances

2015 Key Ingredient Cook-Off
2015 Key Ingredient Cook-Off2015 Key Ingredient Cook-Off
2015 Key Ingredient Cook-Offirwinvifxcfesre
 
[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략NHN FORWARD
 
Meet Magento Milano 2016
Meet Magento Milano 2016Meet Magento Milano 2016
Meet Magento Milano 2016Enrico
 
JavascriptMVC
JavascriptMVCJavascriptMVC
JavascriptMVC4lb0
 
Practical JavaScript Programming - Session 2/8
Practical JavaScript Programming - Session 2/8Practical JavaScript Programming - Session 2/8
Practical JavaScript Programming - Session 2/8Wilson Su
 
Hacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual BasicHacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual BasicHumbertoWuwu
 
Spring Framework Orm Di
Spring Framework Orm DiSpring Framework Orm Di
Spring Framework Orm Diahwkong2000
 
Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8Wilson Su
 
JAVA Program in NetBeans
JAVA Program in NetBeansJAVA Program in NetBeans
JAVA Program in NetBeansHimanshiSingh71
 
InterCon 2017 - Otimizando renderização e animações na Web - Sergio Lopes
InterCon 2017 - Otimizando renderização e animações na Web - Sergio LopesInterCon 2017 - Otimizando renderização e animações na Web - Sergio Lopes
InterCon 2017 - Otimizando renderização e animações na Web - Sergio LopesiMasters
 
Pianist and composer Jeff Kowalkowski releases strong new trio album
Pianist and composer Jeff Kowalkowski releases strong new trio albumPianist and composer Jeff Kowalkowski releases strong new trio album
Pianist and composer Jeff Kowalkowski releases strong new trio albumirwinvifxcfesre
 

Tendances (20)

2015 Key Ingredient Cook-Off
2015 Key Ingredient Cook-Off2015 Key Ingredient Cook-Off
2015 Key Ingredient Cook-Off
 
Get more votes!
Get more votes!Get more votes!
Get more votes!
 
[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략[2019] 실용적인 프런트엔드 테스트 전략
[2019] 실용적인 프런트엔드 테스트 전략
 
Meet Magento Milano 2016
Meet Magento Milano 2016Meet Magento Milano 2016
Meet Magento Milano 2016
 
JavascriptMVC
JavascriptMVCJavascriptMVC
JavascriptMVC
 
Best Fried Chicken
Best Fried ChickenBest Fried Chicken
Best Fried Chicken
 
Practical JavaScript Programming - Session 2/8
Practical JavaScript Programming - Session 2/8Practical JavaScript Programming - Session 2/8
Practical JavaScript Programming - Session 2/8
 
Hacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual BasicHacer una calculadora en Java y en Visual Basic
Hacer una calculadora en Java y en Visual Basic
 
Iteratory
IteratoryIteratory
Iteratory
 
Best gourmet market
Best gourmet marketBest gourmet market
Best gourmet market
 
Best hotel
Best hotelBest hotel
Best hotel
 
Spring Framework Orm Di
Spring Framework Orm DiSpring Framework Orm Di
Spring Framework Orm Di
 
Local storages
Local storagesLocal storages
Local storages
 
Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8Practical JavaScript Programming - Session 3/8
Practical JavaScript Programming - Session 3/8
 
JAVA Program in NetBeans
JAVA Program in NetBeansJAVA Program in NetBeans
JAVA Program in NetBeans
 
Index2
Index2Index2
Index2
 
es6.concurrency()
es6.concurrency()es6.concurrency()
es6.concurrency()
 
Macro
MacroMacro
Macro
 
InterCon 2017 - Otimizando renderização e animações na Web - Sergio Lopes
InterCon 2017 - Otimizando renderização e animações na Web - Sergio LopesInterCon 2017 - Otimizando renderização e animações na Web - Sergio Lopes
InterCon 2017 - Otimizando renderização e animações na Web - Sergio Lopes
 
Pianist and composer Jeff Kowalkowski releases strong new trio album
Pianist and composer Jeff Kowalkowski releases strong new trio albumPianist and composer Jeff Kowalkowski releases strong new trio album
Pianist and composer Jeff Kowalkowski releases strong new trio album
 

En vedette

OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureCocoaHeads France
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads parisCocoaHeads France
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetCocoaHeads France
 
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetCocoaHeads France
 
CocoaHeads Paris iBeacon par Clément Sauvage
CocoaHeads Paris iBeacon par Clément SauvageCocoaHeads Paris iBeacon par Clément Sauvage
CocoaHeads Paris iBeacon par Clément SauvageCocoaHeads France
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureCocoaHeads France
 
Premiers pas en freelancing - HopWork - Jean Baptiste
Premiers pas en freelancing - HopWork - Jean BaptistePremiers pas en freelancing - HopWork - Jean Baptiste
Premiers pas en freelancing - HopWork - Jean BaptisteCocoaHeads France
 
Framework dynamic par Simone Sivetta
Framework dynamic par Simone SivettaFramework dynamic par Simone Sivetta
Framework dynamic par Simone SivettaCocoaHeads France
 
Local Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothLocal Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothCocoaHeads France
 
MultiPeer Connectivity Framework
MultiPeer Connectivity Framework MultiPeer Connectivity Framework
MultiPeer Connectivity Framework CocoaHeads France
 
Snips MVC revisited by Michael Fester
Snips MVC revisited by Michael FesterSnips MVC revisited by Michael Fester
Snips MVC revisited by Michael FesterCocoaHeads France
 

En vedette (20)

OHHttpStubs
OHHttpStubsOHHttpStubs
OHHttpStubs
 
OSX Complex Application Challenge Architecture
OSX Complex Application Challenge ArchitectureOSX Complex Application Challenge Architecture
OSX Complex Application Challenge Architecture
 
Conférence DotSwift 2016
Conférence DotSwift 2016Conférence DotSwift 2016
Conférence DotSwift 2016
 
Code flow - Cocoaheads paris
Code flow - Cocoaheads parisCode flow - Cocoaheads paris
Code flow - Cocoaheads paris
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey Bocquet
 
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe ConversetTalk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
 
Revue des annonces WWDC2015
Revue des annonces WWDC2015Revue des annonces WWDC2015
Revue des annonces WWDC2015
 
Apple Search Optimization
Apple Search OptimizationApple Search Optimization
Apple Search Optimization
 
CocoaHeads Paris iBeacon par Clément Sauvage
CocoaHeads Paris iBeacon par Clément SauvageCocoaHeads Paris iBeacon par Clément Sauvage
CocoaHeads Paris iBeacon par Clément Sauvage
 
Couverture de code
Couverture de codeCouverture de code
Couverture de code
 
POI clusturing
POI clusturingPOI clusturing
POI clusturing
 
Mastering Interface Builder
Mastering Interface BuilderMastering Interface Builder
Mastering Interface Builder
 
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeatureBlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
BlaBlaCar et la mise en place d'une fonctionnalité FlagFeature
 
Premiers pas en freelancing - HopWork - Jean Baptiste
Premiers pas en freelancing - HopWork - Jean BaptistePremiers pas en freelancing - HopWork - Jean Baptiste
Premiers pas en freelancing - HopWork - Jean Baptiste
 
Framework dynamic par Simone Sivetta
Framework dynamic par Simone SivettaFramework dynamic par Simone Sivetta
Framework dynamic par Simone Sivetta
 
Plugins Xcode
Plugins XcodePlugins Xcode
Plugins Xcode
 
Silent push
Silent pushSilent push
Silent push
 
Local Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban TothLocal Authentication par Pierre-Alban Toth
Local Authentication par Pierre-Alban Toth
 
MultiPeer Connectivity Framework
MultiPeer Connectivity Framework MultiPeer Connectivity Framework
MultiPeer Connectivity Framework
 
Snips MVC revisited by Michael Fester
Snips MVC revisited by Michael FesterSnips MVC revisited by Michael Fester
Snips MVC revisited by Michael Fester
 

Plus de CocoaHeads France

Plus de CocoaHeads France (20)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 
Handle the error
Handle the errorHandle the error
Handle the error
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 

UISearchController par Stéphane sudre