SearchBar nicht an UITableView geknüpft.

  • SearchBar nicht an UITableView geknüpft.

    Ich hab eine fertige Suche programmiert wo die SearchBar mit Hilfe der IB auf die Tabelle verknüpft ist.
    Jedoch möchte ich die Suche nicht über der Tabelle haben sondern extern die aber trotzdem auf die Tabelle zugreift.
    Wie verbinde ich denn die Tabelle mit der SearchBar. Weil normaler wird die Tabelle ja zum delegate von der SearchBar.

    Lg
  • TeamNoX schrieb:

    Ich hab die SearchBar schon wo sie hin soll ^^nur sie hat halt keine Verbindung zur Tabelle :)


    Du musst doch nur den Delegierten Deines Suchfeldes an die Datenquelle Deine Tabelle heranführen.

    Quellcode

    1. mySearchbar.delegate = tv.dataSource;

    oder so ähnlich, und dann die Methoden der Datenquelle entsprechend ausgestalten.
    I would be embarrassed if they did not spy on me.
  • nur wie greif ich auf die Datasource zu?

    Ich hab einen xib mit meiner SearchBar und eine Xib mit meiner Tabelle in der die DataSource auch definitiert ist.
    Jedoch taucht diese nirgends im Code auf.
    edit:

    habs jezt

    Quellcode

    1. mySearchBar.delegate = appDelegate.rootViewController.tableView.tableView.dataSource;


    tableView ist bei mir auch eine Klasse werde dies auch noch ändern damit es keien Verwirrt :)

    Jedoch bekomm ich jetzt 2 Fehler meldungen

    Quellcode

    1. /Users/dennis/Desktop/WSL/Sportbootlotse/SearchBar.m:40: warning: type 'id <UITableViewDataSource>' does not conform to the 'UISearchBarDelegate' protocol

    Quellcode

    1. file://localhost/Users/dennis/Desktop/WSL/Sportbootlotse/SearchBar.m: warning: Semantic Issue: Assigning to 'id<UISearchBarDelegate>' from incompatible type 'id<UITableViewDataSource>'

    und sobald ich was eintippe eine exception mit folgendem fehler:

    Quellcode

    1. unrecognized selector sent to instance 0x5845680
    2. 2011-05-06 13:12:02.039 Sportbootlotse[4171:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SearchBar tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x5845680'

    Lg
  • TeamNoX schrieb:

    nur wie greif ich auf die Datasource zu?

    Ich hab einen xib mit meiner SearchBar und eine Xib mit meiner Tabelle in der die DataSource auch definitiert ist.
    Jedoch taucht diese nirgends im Code auf.

    Lg


    Umso besser.

    Dann brauchst Du doch nur die Objekte verknüpfen, beispielsweise an Deinen ViewController, und nur darauf achten, dass es dieselbe Instanz ist.
    I would be embarrassed if they did not spy on me.
  • TeamNoX schrieb:

    aber ich kann die nicht verknüpfen der lässt keine verbindungen zu im interfacebuilder zu anderen xib´s


    Aber solltest Du nicht zumindest einen ViewController haben, der als "file's owner' auftritt.
    Den könntest Du dann verknüpfen.
    '
    I would be embarrassed if they did not spy on me.
  • Also jetzt funktioniert die Suchen schonmal im NSLog. Aber ich bekomm das Ergebnis nicht angezeigt.

    Quellcode

    1. - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
    2. {
    3. NSLog(@"NEUE SUCHE");
    4. NSLog(@"Search String %@", searchString);
    5. [searchSource1 removeAllObjects];
    6. for (NSArray *myPoi in appDelegate.poiList)
    7. {
    8. NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(SELF contains[code=c] %@)", searchString];
    9. BOOL resultName = [predicate evaluateWithObject:[myPoi valueForKey:@"name"]];
    10. if (resultName) {
    11. NSLog(@"TESTER");
    12. // searchSource = [appDelegate.poiList filteredArrayUsingPredicate:predicate];
    13. [searchSource1 addObject:myPoi];
    14. NSLog(@"Search 3%@", searchSource1);
    15. [self.searchDisplayController.searchResultsTableView reloadData];
    16. }
    17. }
    18. return YES;
    19. }
    Alles anzeigen


    Warum nicht?
  • Aber Dein Suchbalken hat doch die Eigenschaft "searchResultsTableView". Ist die immer noch nicht zugewiesen?


    Was meinst du mit zugewiesen?

    Bei mir öffnet sich wenn ich Suche einen Popover mit einer neuen TableView und darin werden anscheind die ergebnisse angezeigt.

    Ich lad ja eig die Tabelle Neu.

    Quellcode

    1. [self.searchDisplayController.searchResultsTableView reloadData];


    in meiner ViewDid Load von der SearchBar.m hab ich das noch zu stehen.

    Quellcode

    1. self.searchDisplayController.searchResultsDataSource = appDelegate.rootViewController.tableView.tableView.dataSource;
    2. self.searchDisplayController.searchResultsTableView = appDelegate.rootViewController.tableView.tableView;
    3. searchSource1 = [[NSMutableArray alloc] init];


    Bzw das

    Quellcode

    1. self.searchDisplayController.searchResultsTableView = appDelegate.rootViewController.tableView.tableView;

    funktioniert nicht wiel es nur READ ONLY geht.

    Was ist denn der Fehler warum er die Ergebnisse nicht anzeigt :(