Parse.com UISearchBarDelegate

XCode AppleParse.com lemaradt része jön, az UISearchDisplayDelegate , UISearchBarDelegate ! Kerestem megoldást, hogy is lehet a kereső modult hozzáadni a UITableView vagy a Parse.com féle PFQueryTableViewController-hez ! Van pár megoldás a neten de valahogy egyik se akar működni és mindenki csak szenved vele !! Most akkor nézzük az Én verziómat ami működik és használható !!

Először is hozzá adjuk a UISearchDisplayDelegate , UISearchBarDelegate részt az interface-hez majd van három property-k!

@interface UJViewController ()<UISearchDisplayDelegate, UISearchBarDelegate> {
}
@property (nonatomic, strong) UISearchBar *searchBar;
@property (nonatomic, strong) UISearchDisplayController *searchController;
@property (nonatomic, strong) NSMutableArray *searchResults;

Parse.com UISearchBarDelegate 1

– (void)viewDidLoad következik ahol a kereső részt hozzuk létre úgy, hogy nem látszik ha elindul a tábla csak ha lefelé húzzuk a cell-részt !

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
self.tableView.tableHeaderView = self.searchBar;
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.searchController.delegate = self;
CGPoint offset = CGPointMake(0, self.searchBar.frame.size.height);
self.tableView.contentOffset = offset;
self.searchResults = [NSMutableArray array];
Parse.com UISearchBarDelegate 2
Következő amit meg kell adni hol keressen és mit jelenítsen meg a kereső

-(void)filterResults:(NSString *)searchTerm {

[self.searchResults removeAllObjects];
PFQuery *query = [PFQuery queryWithClassName: @”ujtabla”]; // tábla amiben keres
[query whereKeyExists:@”textresz”]; // oszlop amiben keres
[query whereKey:@”textresz” containsString:searchTerm];
NSArray *results = [query findObjects];
[self.searchResults addObjectsFromArray:results];
}
Most jön a megjelenítés

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self filterResults:searchString];
return YES;
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (tableView == self.tableView) {
return self.objects.count;
} else {
return self.searchResults.count;
}
}
– (void)callbackLoadObjectsFromParse:(NSArray *)result error:(NSError *)error {
if (!error) {
[self.searchResults removeAllObjects];
[self.searchResults addObjectsFromArray:result];
[self.searchDisplayController.searchResultsTableView reloadData];
} else {
NSLog(@”Error: %@ %@”, error, [error userInfo]);
}
}
Parse.com UISearchBarDelegate 3
Ha ezzel megvagyunk akkor jöhet a cell rész és itt szúrják el sokan a dolgot ahogy olvasgattam mert a keresőnél nem hívják meg újra a PFObject-et !! Ha saját Cell-t használtok akkor az nem fog működni a kereső felületen. Ha nem ott csak a cell.textLabel.text és a detailTextLabel.text működik és természetesen a imageView is !

if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
if (tableView == self.tableView) {
cell.textLabel.text = [object objectForKey:@”textresz”];
}

else if(tableView == self.searchDisplayController.searchResultsTableView) {
PFObject *searchedUser = [self.searchResults objectAtIndex:indexPath.row];
cell.textLabel.text = [searchedUser objectForKey:@”textresz”];

}
Parse.com UISearchBarDelegate 4
Ha mindent jól csináltunk akkor a kezdő kép ez lesz ha lehúzzuk a táblát!
Parse.com UISearchBarDelegate 5
A kereső meg így fog mutatni keresési eredménnyel !!
Parse.com UISearchBarDelegate 6

Most akkor van egy hibátlan Parse.com search bar ami használható és nem akad mint a többi ami található más oldalakon !!

Reklámok

6 hozzászólás

Kategória: Források

6 responses to “Parse.com UISearchBarDelegate

  1. szabi

    kb. a 20. oraja probalom ezt megcsinalni storyboarddal, eddig semmi eredmennyel, erre talalok egy magyar tutorialt. remelem valahogy sikerul rahuzni ezt egy storyboard projektre. ezer koszonet, hogy foglalkoztal a dologgal, hihetetlenul jo, hogy van valaki, aki magyarul ir parse tutorialokat. koszonom szepen

    • Minden Parse.com megoldást megtalálsz az oldalon !
      StoryBoard-on működik a UISearchBar amit nem írtam bele az hogy ha plusz label-t ( text és a detail helyett )akarsz akkor azt kóddal írd meg hol jelenjen meg !!

  2. szabi

    Kiraly, koszi. Most probalgatom.
    Ezt a 3 property-t,
    @property (nonatomic, strong) UISearchBar *searchBar;
    @property (nonatomic, strong) UISearchDisplayController *searchController;
    @property (nonatomic, strong) NSMutableArray *searchResults;

    es a viewDidLoad-bol a lenti sorok nem kellenek ugye, ha storyboardot hasznalok? A UISearchDisplayDelegate, UISearchBarDelegate pedig kell igy is?
    self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
    self.tableView.tableHeaderView = self.searchBar;
    self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self];
    self.searchController.searchResultsDataSource = self;
    self.searchController.searchResultsDelegate = self;
    self.searchController.delegate = self;
    CGPoint offset = CGPointMake(0, self.searchBar.frame.size.height);
    self.tableView.contentOffset = offset;
    self.searchResults = [NSMutableArray array];

    Ennel a classnal amugy milyen subclass-t hasznaltal? PFQueryTableViewController-t vagy a sima UITableViewcontrollert?

    • Az első három a kereső alap pozícióját adja meg !
      UISearchDisplayDelegate, UISearchBarDelegate kell !!!
      Igen a Parse gyári TableView-et használom de ezt láthatod is a videón !

  3. mark

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.tableView) {
    return self.objects.count;
    } else {
    return self.searchResults.count;
    }
    }

    error return self.objects.count;

  4. Can you send for my E-mail (lock95@yandex.ru) example how to implement the SearchBar in the Parse.com example ?

    Thanks!

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google kép

Hozzászólhat a Google felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s