Tableau + Actions

ganjaawganjaaw Membre
06:47 modifié dans API AppKit #1
Ciao,

Je suis débutant en Objectiv-c et je développe une appli pour mon iphone.

L'appli est assez basique quand elle s'ouvre un tableau s'affiche avec des options (Rouge, Bleu, Vert), quand on clique sur une couleur je voudrais pouvoir accéder à  une autre fenêtre qui s'affiche avec cette couleur en background est ce que c'est possible ?

A+ Merci

Réponses

  • CeetixCeetix Membre
    06:47 modifié #2
    Oui,

    Tu déclares une classe (UIView) pour ta seconde vue et quand tu vas valider un menu couleur tu lui passes une variable couleur qui va définir la couleur de ton background.
  • ganjaawganjaaw Membre
    06:47 modifié #3
    OK, tu aurai un exemple en code stp
  • CeetixCeetix Membre
    06:47 modifié #4
    J'ai fait ça à  l'arrache je sais pas si ça va t'aider.
  • Philippe49Philippe49 Membre
    06:47 modifié #5
    Fonctionnement de la table view

    Je suppose que tu as déjà  ta vue principale pilotée par un UITableViewController

    Alors tu dois avoir les méthodes de UITableViewDatasource qui doivent être implémentées , et qui te permettent de voir apparaà®tre tes options Rouge/Vert/Bleu dans trois lignes de la table view. Cela marche-t-il correctement ?

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {<br />&nbsp; ...<br />}<br /><br /><br />// Customize the number of rows in the table view.<br />- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {<br />&nbsp; &nbsp; ....<br />}<br /><br /><br />// Customize the appearance of table view cells.<br />- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {<br />&nbsp; &nbsp; ....<br />}<br />
    

  • Philippe49Philippe49 Membre
    06:47 modifié #6
    La vue à  faire apparaà®tre après un choix de l'utilisateur

    Tu crées une classe MyViewController (clic-droit sur Classe, add > newFile et choisir un fichier UIViewController )

    Tu crées un xib MyView (Clic-droit sur Resources, add > newFile et choisir un View xib dans User Interfaces)

    Double-clic sur ce xib , clic sur File'sOwner, et dans le panel "Object Identity " mettre la classe à  MyViewController. Faire un clic droit sur File's OWner, et connecter à  view, choisir view dans le menu qui apparaà®t en noir.

    C'est cette vue qui apparaà®tra.


  • Philippe49Philippe49 Membre
    06:47 modifié #7
    Le code d'initialisation du système viewController + view

    Dans l'UITableViewController (appelé ici RootViewController), implémenter viewDidLoad ainsi:

    #import &quot;RootViewController.h&quot;<br />#import &quot;rougeVertBleuAppDelegate.h&quot;<br />#import &quot;MyViewController.h&quot;<br /><br />@implementation RootViewController<br /><br />@synthesize&nbsp; myViewController;<br /><br />- (void)viewDidLoad {<br />&nbsp; &nbsp; [super viewDidLoad];<br />&nbsp; &nbsp; myViewController=[[MyViewController alloc] initWithNibName:@&quot;MyView&quot; bundle:nil];<br />}<br />-(void) dealloc {<br />&nbsp; &nbsp; [myViewController release];<br />&nbsp; &nbsp; [super dealloc];<br />}<br />
    


    avec la déclaration qui va avec dans l'interface

    #import &lt;UIKit/UIKit.h&gt;<br />@class MyViewController;<br /><br />@interface RootViewController : UITableViewController {<br />	MyViewController * myViewController;<br />}<br />@property (nonatomic,retain) 	MyViewController * myViewController;<br /><br />@end<br />
    
  • Philippe49Philippe49 Membre
    06:47 modifié #8
    La réaction au touch de l'utilisateur

    Quand l'utisateur touche une rangée Rouge, Vert ou Bleu, le message tableView: didSelectRowAtIdexPath: est envoyée au delegate de la table view (la connection doit être faite dans IB)

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {<br />&nbsp; &nbsp; switch(indexPath.row) {<br />	case 0: // le rouge<br />	{<br />		myViewController.backgroundColor=[UIColor redColor];<br />		[[self navigationController] pushViewController:myViewController animated:YES]; <br />	}<br />	etc ..<br />				<br />}
    


    Voilà , maintenant je n'ai pas essayé , il y a peut-être encore des gri-gri
    Je me suis basé sur l'hypothèse d'un projet de type Navigation-Based Application.
    Si cen 'est pas le cas, il faut adapter [[self navigationController] pushViewController:myViewController animated:YES]; à  la situation en cours.
  • CeetixCeetix Membre
    06:47 modifié #9
    Voilà  j'ai fait le projet, je n'avais pas très bien compris ce que c'était ça tu voulais.
    Ca reprend le poste de Philippe.
    J'espère que ca pourrai t'aider  ;)
  • ganjaawganjaaw Membre
    06:47 modifié #10
    Merci pour vos réponse je regarde tous ça et vous redonne des nouvelles A+
  • ganjaawganjaaw Membre
    06:47 modifié #11
    Re Salut,

    Voilà  mon projet avance un petit peu grâce au tuto vidéo de ceetix (Vraiment bien tes tutos !).

    En faites le vrai projet un système de calcul de moyenne scolaire.

    Voilà  comment ça se passe :

    1) on affiche les branches dans un NSMUtableArray ensuite quand je clique dessus il me dirige vers une seconde view avec aussi un NSMUtableArray qui contient les notes de la branche.

    Cette partie fonctionne sauf que je n'arrive pas à  afficher la 2ème view.

    2) Mon soucis dans la seconde et que j'ai créer une classe TabViewController mais impossible d'afficher quelque chose il plante au moment ou je selectionne une branche je ne sais pas quoi faire pour qu'il me créer la meme interface que la première view.

    Pour ajouter les notes au table je pense savoir faire la question est comment retrouver la meme interface que la 1ère view.

    Dans cette view je voudrais aussi rajouter un "BarItemMenu" qui me dirige vers un 3ème view pour pouvoir ajouter une note à  la branche.

    3) Le 3ème view aura juste un label avec un slider et un bouton save pour ajouter la note a la brance

    J'ai déja trouver comment faire le slider avec le label mais pas le bouton save

    Voila j'espere avoir été clair, ce que je recherche c'est un peu des explications pour chaque partie.

    Pour les notes pour l'instant elles sont en dure dans l'appli donc ne vous inquiétez pas de comment je les récupère.

    Le tuto de ceetix ma déja bien aider merci à  lui.

    Si vous des questions n'hésitez pas !

    p.s : cette appli n'a aucun but commerciale il s'agit d'un projet perso dans le cadre d'un module scolaire et je galère un peu ^^ donc toutes aide et la bienvenue




  • CeetixCeetix Membre
    06:47 modifié #12
    Merci ;)

    Tu as peut-être oublié de relié un truc sous IB.
  • Philippe49Philippe49 Membre
    mars 2009 modifié #13
    dans 1237893969:

    1) on affiche les branches dans un NSMUtableArray ensuite quand je clique dessus il me dirige vers une seconde view avec aussi un NSMUtableArray qui contient les notes de la branche.

    Cette partie fonctionne sauf que je n'arrive pas à  afficher la 2ème view.


    Pose des questions plus précises, comment veux-tu que l'on sache pourquoi ta seconde vue  ne s'affiche pas ?
    - Qu'est-ce qu'une branche?
    - Par quelle action (utilisateur ou programme) espères-tu voir apparaà®tre cette seconde vue ?
    - Quel est le code qui est sensé réagir à  la sollicitation ?

    Ne fais pas non plus des post à  rallonge, n'hésite pas à  ouvrir un post par problème, on ne peut pas tout relire à  chaque fois, surtout quand c'est espacé dans le temps. De plus très souvent le fait de formuler clairement la demande permet de trouver soi-même une grande partie de la réponse, et de chercher sur le forum si le sujet n'a pas déjà  été résolu.

    @+ et bon code !
  • ganjaawganjaaw Membre
    06:47 modifié #14
    J'ai déjà  créer un projet de type "Navigation based-appli" qui ma créer la base.

    Ensuite j'ai suivit le tuto de ceetix sur les table view (http://www.iphonetuts.fr/tableview.php) et il y'a un moment ou lorsqu'on clique sur une cellule du tableau il nous dirige vers une nouvelle vue, moi je voudrais la même chose seulement que lorsque j'arrive sur la 2ème vue il m'affiche de nouveau un tableau et pas une simple vue avec un label voila vous pouvez déjà  essayer de répondre à  cette question ? ^^

    J'ai déja créer une sous-class de type UITableViewController subclass mais ensuite je ne sais pas quoi mettre dans Interface Builder pour qu'il m'affiche la vue, j'ai essayé de copier la même chose quand dans les fichiers qu'il créer au début du projet mais impossible il compile mais ensuite m'affiche un message "__TERMINATING_DUE_TO_UNAUGHT_EXCEPTION__".


    Voilà  si besoin je peux vous mettre les sources à  dispo

    A+

    p.s : les branches sont des branches scolaire (Français, Math, Physique, etc...).
  • Philippe49Philippe49 Membre
    06:47 modifié #15
    Les branches sont donc les lignes de ta UITableView.

    1) Tu crées un nouveau xib
    2) Tu vires la view qui s'y trouve, et tu la remplaces par une UITableView que tu trouves dans la librairie
    3) Tu sélectionnes File'sOwner et dans l'inspecteur de titre "Identity", tu attribues la classe de ton UITableViewCOntroller perso
    4) Tu connectes dans IB l'outlet view de File's Owner à  la table view que tu as rajoutée
    5) Tu connectes dans IB les outlet delegate et datasource de la table view à  File's Owner
    6) Dans la méthode didSelect du UItableViewController principal tu crées une instance de ce UITableViewControler perso, en suivant le schéma proposé plus haut.

    Cela devrait te permettre de voir apparaà®tre ta vue 
  • ganjaawganjaaw Membre
    06:47 modifié #16
    Super ! Ca marche ^^

    Par le "barMenuItemn" qui pointe vers une autre vue ?? une petite idée ??

    dis moi si j'abuse ^^
  • Philippe49Philippe49 Membre
    06:47 modifié #17
    dans 1237907048:

    Par le "barMenuItemn" qui pointe vers une autre vue ?? une petite idée ??

    Parce que tu as une tab bar en même temps ?
  • Philippe49Philippe49 Membre
    mars 2009 modifié #18
    Si tu veux faire TabBar + NavigationController, il faut affiner le système des UIViewController (voir ce post) , mais je te conseillerais plutôt de procéder progressivement dans les difficultés ...
  • ganjaawganjaaw Membre
    06:47 modifié #19
    Aller dernière question après j'arrête de vous embêtez ^^

    Comment passer un variable de type string entre 2 vues

    Vue 1 --> Je définis ma variable

    Vue 2 --> Je la récupère

    Merci

    A+
  • Philippe49Philippe49 Membre
    06:47 modifié #20
    Très imprécis :

    • La vue 1 a-t-elle une variable d'instance pointant sur la vue 2 ?
    • Les vues sont-elles classées , ayant ainsi leur code propre ?
    • Ou sont-elles gérées par ViewController ?
    • Si oui les ViewController peuvent-ils communiquer (par variable d'instance / property) ?
    • ...
Connectez-vous ou Inscrivez-vous pour répondre.