2009-05-13 9 views
0

J'ai un contrôleur Table View qui affiche une liste de messages. Je veux que l'utilisateur puisse choisir différentes options de tri pour ses messages. Certaines options de tri possibles peuvent être les plus récentes, lues/non lues, par l'expéditeur, etc.Comment connecter une vue table à une source de données triable

Ce dont je discute dans mon esprit est la manière correcte de gérer la liste sous-jacente des messages. Voici mon plan actuel:

J'ai un objet Modèle MessageList personnalisé. Je vais ajouter une propriété sortedBy afin que tout contrôleur puisse vérifier la méthode de tri en cours et utiliser la liste si nécessaire. Le MessageList devra être responsable de l'insertion de nouveaux messages correctement en fonction de la méthode de tri en cours qui a été choisie. J'aime cette approche parce que je n'ai pas besoin de faire une copie triée du MessageList. Il garde également les choses simples pour le contrôleur (indexPath.row == indexOfMessageInList).

Est-ce que quelqu'un a été dans une situation similaire et a découvert une meilleure approche?

+0

Cela semble être une bonne solution pour moi. Souvenez-vous simplement qu'après avoir appliqué un tri à votre MessageList sous-jacent, vous devrez actualiser la vue de la table - [tableView reloadData] ou quelque chose de similaire. – Tim

Répondre

0

Plan semble assez solide, ce que je ferais est de mettre en œuvre un setter personnalisé pour triéBy et chaque fois qu'il est appelé également faire un appel à [tableView reloadData] chaque fois qu'il y a un changement réel. Quelque chose comme ceci:

- (void) setSortedBy:(SEL)someSortMethod { 
    # check if the sort method is new or not 
    # perform operations on list to sort it 
    sortedBy = someSortMethod; 

    [self.tableView reloadData]; 
} 
Questions connexes