2016-10-19 4 views
0

J'ai un problème avec mon application iOS, j'ai ajouté 2 sections à ma vue de table, mais la barre de recherche affiche ses résultats dans mes deux sections au lieu d'une seule fois .Barre de recherche affichant les résultats dans les deux sections de la vue Tableau

Juste deviner ici, mais peut-être le problème parce que la barre de recherche n'a pas sa propre section donc il place les résultats dans les deux? Dois-je ajouter une autre section? Corriger le code? Ou ajouter un autre contrôleur tableview/view pour gérer le filterArray?

code:

dataArray est où j'ai tous mes tableaux de mon serveur

followedArray est où certains tableaux vont de tableauDonnees

filteredArray est les tableaux recherchés de tableauDonnees

numberOfRowsInSection

if (!isFiltered) { 

    if (section == 0) { 
     return [followedArray count]; 
    } 
    else { 
     return [dataArray count]; 
    } 
} 
return [filteredArray count]; 

titleForHeaderInSection

if (section == 0) { 
    return @"Followed Data"; 
} 
else { 
    return @"All Data"; 
} 

cellForRowAtIndexPath

Data * dataObject; 
if (!isFiltered) { 

    if (indexPath.section == 0) { 
     dataObject = [followedArray objectAtIndex:indexPath.row]; 
    } 
    else { 
     dataObject = [dataArray objectAtIndex:indexPath.row]; 
    } 
} 
else { 
    dataObject = [filteredArray objectAtIndex:indexPath.row]; 
} 

Searchbar textDidChange

if (searchText.length == 0) { 
    isFiltered = NO; 
} else { 
    isFiltered = YES; 

    filteredArray = [[NSArray alloc] init]; 
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self.dataName contains[c] %@", searchText]; 
    filteredArray = [dataArray filteredArrayUsingPredicate:resultPredicate]; 

} 
[myTableView reloadData]; 

--------------------------------

ce que je fais mal ici? Ou est-ce que je manque quelque chose?

Je veux avoir mon followArray dans la section 1, dataArray dans la section 2, et le filteredArray lors de la recherche de dataArray avec la barre de recherche pour l'afficher indépendamment et non dans les deux sections comme il le fait maintenant. Je vous remercie!

Répondre

1

réponse très simple mais j'était nouveau pour iOS

// Title for Header 
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

    if !(searchController.isActive && searchController.searchBar.text != "") { 

     if section == 0 { 
      return "Followed Data" 
     } 
     else { 
      return "All Data" 
     } 
    } 

    return "Filtered Data" 
} 

// Number of Rows in Section 
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    if !(searchController.isActive && searchController.searchBar.text != "") { 

     if section == 0 { 

      return followedArray.count 
     } 
     else if (section == 1) { 

      return dataArray.count 
     } 
    } 

    return filteredArray.count 
} 

// Number of Sections 
func numberOfSections(in tableView: UITableView) -> Int { 

    if !(searchController.isActive && searchController.searchBar.text != "") { 

     return 2 
    } 

    return 1 
}