2010-11-21 24 views
0

J'ai une classe nommée transaction dans laquelle un attribut est transactionDate qui est de type NSDate. J'utilise NSArrayController pour afficher une liste de transactions dans une vue de table.Affichage de la date à partir de deux lignes dans la vue de tableau, respectivement dans deux champs de texte, via la liaison

Mon exigence est-

Je veux afficher la date dans la première ligne dans un champ de texte étiquetés comme « From » et la date dans la dernière ligne dans un champ de texte étiqueté comme « To ».

Mes questions est-

Puis-je parvenir via une liaison à IB? Si oui, alors comment?

Merci,

Miraaj

Répondre

1

Oui, vous pouvez le faire (ou quelque chose comme ça), voir le @min et @max array operators.

Voici comment faire une version très simple de ceci:

  1. Ouvrir Interface Builder - créer une nouvelle application
  2. Ajouter un NSArrayController, réglez pour préparer automatiquement le contenu.
  3. Ajouter une table, étiquetez les deux colonnes "name" et "age"
  4. Ajouter un bouton (marqué "+") et deux étiquettes (nom de changement maxval, minval)
  5. câbler les fixations NSArrayController comme suit:

alt text

Voici l'application en cours d'exécution (juste en mode "simulate" du générateur d'interface). Pour l'utiliser, cliquez sur +, puis sur la première ligne de la table et placez un nom dans la première colonne et un âge dans la seconde. Puis répétez pour quelques personnes de plus.

alt text

Tout cela semble un peu cryptique, mais il est suffisant. J'ai ajouté les étiquettes "Max Age" et "Min Age" pour plus de clarté dans ma version.

0

Malheureusement, ce n'est pas quelque chose Manchettes est particulièrement bon. Vous pourriez l'atteindre mais ce serait très hacky.

Le protocole NSTableViewDataSource est toujours un moyen parfaitement pertinent et valide pour fournir des données à une table. Dans des cas comme ceux-ci (où vous ne présentez pas simplement un ensemble de données uniformes à une table), le protocole de source de données est la seule façon de résoudre le problème. De cette façon, vous avez un contrôle total sur ce que la table affiche. La seule partie «difficile» est que, si vous utilisez des données de base, votre classe de source de données devra observer le contexte d'objet géré pour les changements et recharger les données (soit -reloadData pour rafraîchir la table entière ou utiliser -reloadDataForRowIndexes: columnIndexes: pour sélectionner les lignes que vous souhaitez actualiser.