Question

Il y a environ un mois, ma femme et je suis venu avec une bonne idée pour une application iPhone, donc je me mis à penser à la façon dont l'application fonctionnerait d'un utilisateur point de vue et une semaine il y a j'ai ouvert XCode pour la première fois et a commencé à se développer.

Avant d'entrer trop coincé dans l'écriture de l'application, je veux vous assurer que j'ai quelques concepts clés clair dans mon esprit, lié spécifiquement à l'architecture.

Pour votre information, en tant que principe, je voudrais essayer de créer autant de mon application programme (plus précisément l'interface utilisateur) pour que j'ai une connaissance approfondie de ce qui se passe. Plus tard je pourrais utiliser IB comme un outil pour accélérer le développement interface utilisateur (applique au moment parce que je utilise TableViews par opposition aux vues statiques).

Voir les contrôleurs

  • UINavigationControllers ne sont généralement pas sous-classés et sont créés comme une propriété dans la AppDelegate et sont les « sous-vue » principale de la MainWindow.xib.

  • Le UINavigationController contrôle une pile de vues, et est généralement initiée avec un contrôleur de vue racine.

  • Le contrôleur de navigation est généralement référencé et messaged à partir de la vue actuelle / haut contrôleur comme [auto NavigationController] qui est une propriété en lecture seule de la classe parente UIViewController.

Données de base

  • Le contexte d'objet géré est le point de commande principale pour accéder aux données dans le modèle, mais il est généralement pas utilisé directement et au lieu demandes de récupération sont utilisés pour des réseaux de retour, des ensembles ou des dictionnaires d'objets de données qui sont ensuite utilisées par le afficher les contrôleurs pour présenter et manipuler des données.

  • le contexte est créé comme une propriété dans le délégué de l'application et est ensuite transmis au contrôleur de vue racine lors du démarrage qui lui-même il passe à des vues ultérieures dans la pile avant de dire le contrôleur de navigation pour changer la vue (pour par exemple lorsqu'une cellule est prélevée).

Il m'a fallu une semaine pour obtenir ici, je peux créer mon modèle, le remplir avec des données et l'afficher sur une vue de la table mais je ne l'ai pas pu trouver beaucoup sur des vues modales lorsque vous souhaitez modifier des données, plus précisément comment concevoir des vues modales (s'il y a une différence spécifique aux vues normales)?

En outre, je ne suis pas tout à fait sûr de l'ensemble « contraignant » des données pour afficher des objets ce qu'il fait et comment le faire programme?

Merci pour vos commentaires, suggestions à l'avance.

Était-ce utile?

La solution

Une vue devient modal quand il est affiché à l'aide presentModalViewController: animation. Vous pouvez transmettre le modèle à modifier avant de présenter le point de vue modal.

DetailViewController dvc = ...;
dvc.model = model;
dvc.delegate = self; // if you want to use a delegate pattern.
[self presentModalViewController:dvc animated:YES];

Depuis le modèle que vous souhaitez modifier est disponible dans le contrôleur modal vue, vous pouvez définir les valeurs dans viewDidLoad. Il n'y a pas databinding disponible sur la plate-forme iOS qui signifie que vous devez mis à jour la vue et votre modèle manuellement.

- (void)viewDidLoad {
    [super viewDidLoad];
    self.someTextField.text = self.model.someText;
}

Ce que vous devez considérer lorsque vous travaillez avec une vue modale est que vous devez fournir un moyen de le rejeter. Par exemple. en ayant une barre de navigation en haut avec boutons Enregistrer et Annuler. Rejetant un contrôleur de vue modal est effectuée en utilisant:

[self dismissModalViewControllerAnimated:YES];

Il est possible de rejeter le point de vue modal à l'intérieur du contrôleur modal de vue, mais cela signifie aussi qu'un tel contrôleur modal doit être en mesure d'enregistrer le modèle en question. Personnellement, j'utiliser un rappel au contrôleur présentant le faire savoir wether pour enregistrer ou annuler ainsi que la manipulation du destituant de la vue modale. Cela peut être fait en utilisant un modèle de délégué. Ainsi, lorsque l'utilisateur tape Enregistrer vous pouvez mettre à jour le modèle et informer le délégué.

- (IBAction)save:(id)sender {
    self.model.someText = self.someTextField.text;
    [self.delegate detailViewControllerDidSave:self];
}

Et dans le présentateur ont une méthode comme:

-(void)detailViewControllerDidSave:(DetailViewController *)controller {
  // save the model
  [self dismissModalViewControllerAnimated:YES];
}

Autres conseils

Quelques réponses, de ma connaissance des vues / données. Je n'ai pas encore d'expérience avec CoreData donc ne répondrai pas à cette partie.

  • Une vue modale est juste une vue régulière. Mais sa taille peut être un peu différent, car il couvre certains éléments de l'interface utilisateur qui ne seraient pas couverts par une vue poussé dans un contrôleur de navigation.

  • Pour les données « contraignant » à vue, vous avez déjà fait si vous remplissez une vue de tableau. Il y a une série de méthodes « source de données » pour mettre en œuvre dans votre contrôleur où vous fournissez vos données de votre modèle à votre (modèle MVC) Voir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top