UISearchBar und aufruf eines Details View Controller

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UISearchBar und aufruf eines Details View Controller

    Hallo,

    aktuell habe ich folgende Situation. Ich habe einen Table View erstellt. In diesem Table View befinden sich 8 Sections mit jeweils 4 ROW´s. Beim drücken einer ROW, gelangt mann mittels Segue auf den dazugehörigen Details View Controller (in summe 32 Details View, die dann irgend welche weitere Informationen anzeigen). Jetzt habe ich eine Search Bar mit einem Search Display Controller eingebaut, um im Table View zu suchen. Die suche an sich funktioniert wie es soll. Die Ergebnisse, werden in ein Array geschrieben, und in einer Section im Search Display Controller angezeigt. Das Problem ist jetzt, egal wie das suchergebniss aussieht, und ich auf den Details View gehe, kommt immer der Details View von der Section 0 erste RAW des Table Views.
    Mir ist Klar das ich die Methode "PrepareForSeque" umbauen muss. Aber wie? Ich habe hier schon einiges versucht, aber ich finde leider kein ergebniss. wie muss ich das anstellen, da ich ja zu keiner zeit weiß was gesucht wird und welcher seque danach anzusprechen ist?

    Gruß u. Frohe Ostern
  • Wahrscheinlich greifst Du auf die kompletten Daten zu, wodurch Du immer den ersten Eintrag siehst. Stattdessen musst Du auf das Array mit den Suchergebnissen zugreifen. In der Regel kannst Du diese Fälle anhand der Tableviews unterscheiden (z. B. wie hier). Bei einem Übergang musst Du Dir ggf. in der Methode tableView:willSelectRowForIndexPath: das ausgewählte Objekt in einer Property merken.
    „Meine Komplikation hatte eine Komplikation.“
  • Also ich Behaupte das ich auf das gefilterte Array mit den suchergebnisse zugreifen. Wie gesagt wenn ich mich auf dem TableView befinde kann ich alle 32 Details Views ohne probleme aufrufe. Das Problem tritt erst auf, so wie ich mich im SeachDisplayController befinde. Irgend wie bekomme ich es hier nicht mit den Segues auf die Reihe. Ich kann zwar aus dem SearchDisplayController auf den DetailsView gehen, aber es werden mir immer die gleichen daten angezeigt. Wenn ich dann auf den zurück Button gehe, stürzt der Details View ab.

    die fehlermeldung sieht wie folgt aus:
    'NSInvalidArgumentException', reason: 'Can't add self as subview'

    Methode: "didSelectRowatIndexPath"

    Quellcode

    1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    2. {
    3. [self tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
    4. [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
    5. if (tableView == self.searchDisplayController.searchResultsTableView) {
    6. [self performSegueWithIdentifier: @"BrasilienSegue" sender: self];
    7. }
    8. if (tableView == self.searchDisplayController.searchResultsTableView) {
    9. [self performSegueWithIdentifier: @"KroatienSegue" sender: self];
    10. }
    11. }
    Alles anzeigen


    Methode: "prepareForSegue"

    Quellcode

    1. -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    2. {
    3. if ([segue.identifier isEqualToString:@"BrasilienSegue"]) {
    4. BrasilienViewController *BVC = segue.destinationViewController;
    5. NSIndexPath *indexPath = sender;
    6. if ([self.searchDisplayController isActive]) {
    7. indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
    8. BVC.BrasilienLaenderLabel = [self.searchCountriesArray objectAtIndex:indexPath.row];
    9. } else {
    10. indexPath = [self.tableView indexPathForSelectedRow];
    11. BVC.BrasilienLaenderLabel = [self.listeDerNationen objectAtIndex:indexPath.row];
    12. }
    13. }
    14. if ([segue.identifier isEqualToString:@"KroatienSegue"]) {
    15. KroatienViewController *KVC = segue.destinationViewController;
    16. NSIndexPath *indexPath = sender;
    17. if ([self.searchDisplayController isActive]) {
    18. indexPath = [self.searchDisplayController.searchResultsTableView indexPathForSelectedRow];
    19. KVC.kroatienLaenderLabel = [self.searchCountriesArray objectAtIndex:indexPath.row];
    20. } else {
    21. indexPath = [self.tableView indexPathForSelectedRow];
    22. KVC.kroatienLaenderLabel = [self.listeDerNationen objectAtIndex:indexPath.row];
    23. }
    Alles anzeigen


    Ich würde mich über weitere Hilfe freuen, denn zur zeit verstehe ich das Problem nicht