2010-04-04 5 views
0

Je suis au milieu d'une application iPhone qui doit avoir 4 objets UITableView séparés partageant l'accès à un UISearchBar dans la première section et la première ligne des objets UITableView mentionnés ci-dessus.Persistant une seule instance UISearchBar sur 4 UITableViews séparés

J'ai essayé de compenser le « cadre de pixels par 44, puis en ajoutant la barre de recherche en sous-vue de mes UIViewController » s UITableViewview. Cela fonctionne, mais je ne peux pas utiliser l'index de la table pour faire défiler jusqu'à la barre de recherche, car ce n'est pas une cellule dans la tableview. J'ai besoin d'avoir la barre de recherche dans la vue de la table elle-même.

Mon but est d'avoir le même UISearchBar dans la première section de multiples vues de table.

Merci beaucoup.

Répondre

3

Comme déjà mentionné, vous pouvez mettre la barre de recherche dans la propriété tableHeaderView de UITableView, ce qui le placera en haut de la table sans avoir à effectuer le positionnement manuel. Je ne suis pas sûr de savoir comment cela fonctionne avec l'indexation, cependant. Comme pour partager un UISearchBar, je ne peux pas penser à une bonne raison d'en avoir un pour chaque vue de la table - la différence de mémoire devrait être négligeable, et la définition et la désactivation du délégué et de whatnot pourraient être un tracas sérieux . Y avait-il une raison particulière pour laquelle vous vouliez partager la barre de recherche? Si vous voulez persister, vous pouvez enregistrer le texte de la barre de recherche dans viewWillDisappear et le définir dans viewWillAppear.

Si vous voulez vraiment mettre la barre de recherche dans la première cellule, plutôt que de l'en-tête de table, vous pouvez faire quelque chose comme ceci:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = //etc, normal cell creation 

    if (indexPath.section == 0 && indexPath.row == 0) { 
     [cell addSubview:self.searchBar]; 
    } 
    return cell; 
} 

Mais mettre une barre de recherche dans un en-tête de table est beaucoup plus commun, et beaucoup plus facile à gérer.

1

Vous pouvez simplement ajouter l'UISearchBar en tant que vue d'en-tête de chaque tableView lorsque vous basculez entre eux.

[oldTableView setTableHeaderView:nil]; 
[newTableView setTableHeaderView:searchBar]; 

Bien sûr, il est tout à fait possible que j'ai mal compris ce que vous essayez de faire. Si c'est le cas, veuillez élaborer.