2017-05-16 3 views
0

J'ai donc une vue table basée sur la vue, qui expose la clé et la valeur d'un dictionnaire comme une colonne, liée à un NSDictionaryController (WeatherLocation), dont l'objet de contenu provient d'un élément d'application, avec les fixations comme:Comment câbler la colonne de table de la clé NSDictionary conservée dans le tableau NSUserDefaults

Key column

Value column

et tout ira bien, mais les clés de ce dictionnaire sont finies (7 valeurs): cc, ville, st, loc, latitude, longitude, zip, donc je veux

  1. utilisateur force pour choisir parmi une liste - maintenue dans le tableau de préférences par défaut utilisateur
  2. utiliser la validation clé de dictionnaire (unicité) si les valeurs ne sont pas dupliqués

Mais je suis coincé comment câbler la cellule du bouton contextuel à la valeur de la colonne; jusqu'à présent pour la pile bouton popup pour la colonne de clé je:

enter image description here

donc une vue sur la tableView montre la colonne de clé étant la matrice entière de la valeur par défaut pref, et pas seulement une seule valeur:

enter image description here

+0

Une table ** vue ** baséeView avec un bouton pop-up ** cell ** ne sonne pas correctement. – Willeke

+0

En fait, j'ai essayé les deux types de tables (vue, cellule). Idéalement, je voudrais trouver le menu contextuel à partir des paramètres par défaut de l'utilisateur - paramètres régionaux de langue, par rapport à IB mais l'un ou l'autre est bon. C'est comment câbler la colonne ou la valeur de la cellule est où je suis coincé. Passé ce je vais gérer les exceptions si une entrée en double est tentée en utilisant un délégué tableView. – slashlos

+0

Je recommanderais d'utiliser une vue de table basée sur la vue. Est-ce que 'weatherLocationKeys' dans les préférences de l'utilisateur est ce que vous attendez, un tableau de chaînes? – Willeke

Répondre

0

La solution est affichée sur github; merci à tous de m'avoir guidé.

Les liaisons de colonne, et que ceux qui sont nécessaires sont

enter image description here

Cet exemple montre l'utilisation de valeurs par défaut pour stocker toutes les informations, un dictionnaire via pop-up pour l'entrée de valeur de clé, et un talon de délégué pour valider la valeur de la clé/paire de valeurs. Prendre plaisir.

+0

Remarque: il s'agit d'une vue de table basée sur les cellules. Quand j'essaye ceci dans une vue de table basée sur la vue, Xcode (ibtool) se coince dans une boucle et mange toute ma mémoire. – Willeke

+0

Comment avez-vous résolu le problème clé unique? – Willeke

+0

Un dictionnaire conserve ces paires clé/valeur dans un dictionnaire d'éléments; Les clés sont conservées séparément dans un tableau de préférences utilisateur chargé par l'application. En utilisant l'échantillon de github que j'ai posté, j'ai modifié la tableview pour être basé sur les cellules, puis j'ai déplacé la cellule popupbutton, juste sous la colonne 'Key' - fonctionne toujours. Tentative de sélection d'une clé déjà utilisée pour générer une alerte de feuille intégrée - popover pour fournir une valeur valide. – slashlos