Aller au contenu

Photo

Fiche 12 — Présenter des listes de données


  • Please log in to reply
12 replies to this topic

#1 ipodishima

ipodishima

    iPuP grand maître

  • Administrators
  • 7 436 Messages :

Posté 23 septembre 2010 - 13:32

Bonjour,

Voici la discussion officielle de la fiche n°12.

"Vous voilà familier avec quelques éléments du UIKit, et roi du delegate ! Il existe des manières élégantes de présenter des listes de données à l’utilisateur, encore faut-il savoir les mettre en place."

Bonne lecture !
Image IPB
iPuP est aussi et surtout une société spécialisée en dev iOS •• A découvrir sur Internet, Twitter, Facebook

#2 tomy29

tomy29

    iPuP confirmé

  • Lecteur
  • 215 Messages :

Posté 23 octobre 2010 - 17:17

Bonsoir,

J'arrive à exécuter l'appli en créant le label de DetailListViewController en dynamique (comme dans le livre). Mais j'ai un plantage quand je crée le label dans le Xib (via Interface Builder)
Mon plantage a lieu ici
[self.navigationController pushViewController:detailListViewController animated:YES];
J'obtiens le message suivant :

2010-10-23 18:13:35.539 TableView[2836:207] -[UILabel copyWithZone:]: unrecognized selector sent to instance 0x5f18ca0
2010-10-23 18:13:35.545 TableView[2836:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILabel copyWithZone:]: unrecognized selector sent to instance 0x5f18ca0'

J'ai pourtant bien modifié la méthode initWithNibName comme suit :
// The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:@"DetailListViewController" bundle:nil])) {
        // Custom initialization
    }
    return self;
}
et ajouté mon label dans Interface Builder et l'ai relié à sa variable dans DetailViewController.

Si vous avez une piste pour m'aider à résoudre mon problème, je suis preneur.
Merci!
Thomas.

#3 ipodishima

ipodishima

    iPuP grand maître

  • Administrators
  • 7 436 Messages :

Posté 23 octobre 2010 - 17:20

Hello,

Tout d'abord, il ne faut pas écrire explicitement ici le DetailList..., mais laisser nibNameOrNil.

Ensuite, je ne sais pas exactement ni coment tu as déclarer le label, ni comment tu l'as relié etc

+
Image IPB
iPuP est aussi et surtout une société spécialisée en dev iOS •• A découvrir sur Internet, Twitter, Facebook

#4 tomy29

tomy29

    iPuP confirmé

  • Lecteur
  • 215 Messages :

Posté 23 octobre 2010 - 17:29

Merci pour ta réponse

Après relecture et correction de mon code, ça fonctionne. Dans DetailListViewController.h j'ai modifié
@property (nonatomic, copy) IBOutlet UILabel *nameLabel;
par
@property (nonatomic, retain) IBOutlet UILabel *nameLabel;
Je débute et me mélange un peu les pinceaux. Ici par exemple j'ai du mal à comprendre pourquoi ça fonctionne quand je change copy par retain...

#5 testpresta

testpresta

    iPuP aguerri

  • Members
  • 112 Messages :

Posté 21 novembre 2010 - 20:10

Bonjour,

Petite question Page 76 concernant la fiche 12.
Je vois ceci dans la méthode reuseIdentifier (méthode qui créé les éléments visuels de la cellule):

[self addSubview:myLabel];

Un release n'est il pas nécessaire ici ?
En effet, le addSubview n'incrémente t'il pas de +1 le retain count ?
Je vois en effet le release dans le dealloc mais le retain count sera de 2 a cet endroit ?

D'avance Merci pour vos réponses.

#6 ipodishima

ipodishima

    iPuP grand maître

  • Administrators
  • 7 436 Messages :

Posté 25 novembre 2010 - 13:45

Salut

Tu vois bien que le label est déclaré dans le .h, du coup, il faut le libérer dans le dealloc, sinon ça perd tout son interêt !

+
Image IPB
iPuP est aussi et surtout une société spécialisée en dev iOS •• A découvrir sur Internet, Twitter, Facebook

#7 SophieStickay

SophieStickay

    iPuP novice

  • Lecteur
  • 40 Messages :
  • LocationBrest

Posté 19 août 2011 - 10:09

Bonjour à tous !
J'ai suivi le tuto de la fiche 12 et je tente de l'utiliser pour une petite application.

Dans RootViewController, j'affiche un NSMutableArray qui a 6 lignes, je clique sur une ligne, j'affiche une vue de détail sans souci (ma vue est "vide" pour le moment).
Je souhaite afficher un NSMutableArray dans ma vue de Détail (je l'ai déclaré et alloué), ce tableau sera bien sûr différent en fonction de la cellule cliquée dans le tableau initial.

J'ai donc une question : où déclarer mes tableaux de détail dans DetailListViewController ?
J'ai pensé à viewDidLoad ? ...

Désolée pour cette question sans doute très bébête pour vous, mais là je sèche...
Sophie
Débutante en programmation IOS mais très motivée !!

#8 SophieStickay

SophieStickay

    iPuP novice

  • Lecteur
  • 40 Messages :
  • LocationBrest

Posté 19 août 2011 - 10:25

Peut-être que je peux déclarer mes tableaux dans viewDidLoad de DetailListViewController, puis dans DidSelectRowAtIndexPath de RootViewController j'indique comment passer à mes tableaux en fonction de la cellule cliquée...
Suis-je sur la bonne voie ??
;-))
Débutante en programmation IOS mais très motivée !!

#9 SophieStickay

SophieStickay

    iPuP novice

  • Lecteur
  • 40 Messages :
  • LocationBrest

Posté 19 août 2011 - 19:05

Je réponds à ma question toute seule :
j'ai fais un if dans didSelectRowAtIndexPath. Voici l'exemple pour ma ligne 0 :
NSUInteger row = [indexPath row];

if (row == 0)
{
DetailListViewController *detailListViewController = [[DetailListViewController alloc] initWithNibName:@"DetailListViewController" bundle:nil];
detailListViewController.title = [dataRootBebe objectAtIndex:[indexPath row]];
[self.navigationController pushViewController:detailListViewController animated:YES];
[detailListViewController release];
}

Voilou !
Débutante en programmation IOS mais très motivée !!

#10 Alarm

Alarm

    iPuP membre

  • Lecteur
  • 1 Messages :

Posté 20 août 2011 - 13:22

Bonjour,
J'essaye de réaliser ce programme de la fiche n°12:

UTILISER UN PICKER VIEW OU LISTE CIRCULAIRE
Créez un nouveau projet Window-based Application, que vous nommerez Picker, pour utiliser les picker view.
Créez ensuite une nouvelle classe de type UIViewController que vous nommerez PickerView- Controller. Comme d’habitude, ajoutez la vue d’un objet PickerViewController (que vous aurez alloué dans votre application delegate) à la window, .

J'ai fait ceci dans "PickerAppDelegate.m":

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

pickerViewController =[[PickerViewController alloc] init];
[window addSubview:pickerViewController.view];
[window makeKeyAndVisible];

return YES;
}

mais à l'execution de de l'application, j'ai ce message dans la console:
2011-08-20 14:21:10.385 Picker[493:207] -[PickerViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x4e41c60
2011-08-20 14:21:10.389 Picker[493:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PickerViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x4e41c60'
*** Call stack at first throw:

Je ne comprends pas pourquoi ?

Merci de votre aide

#11 Arkalum

Arkalum

    iPuP membre

  • Members
  • 1 Messages :

Posté 03 octobre 2011 - 13:47

Bonjour,

J'ai un soucis avec le code des pages 75-76 (Créer une cellule personnalisée). Le code compile nickel, mais je n'ai pas l'affichage personnalisé...

Question 1 : dans la méthode "initWithStyle" (sur le livre) j'ai bizarrement 2 parenthèses : if((self = ..... qui provoque évidement une magnifique erreur de compile. J'ai donc fait avec 1 seule. Je me demande si le code fonctionne en fait...
Question 2 : étant donné que je suis sur l'émulateur, c'est peut être normal.


Merci pour vos réponses

#12 Fred_dufau

Fred_dufau

    iPuP membre

  • Members
  • 1 Messages :

Posté 30 juillet 2012 - 21:35

Bonjour,

J'ai également un souci avec la personnalisation de la cellule.
Dans le livre (la version orange pearson) dans le CustomCell.m il manquait la ligne :

[self addSubView:_myLabel];

Pas de probléme je l'ai vu sur les sources de github.

Donc avant cette correction, j'avais quand meme ma liste d'elements mais sans la personnalisation.
Et par contre aprés l'avoir rajouté, je n'ai plus rien qui s'affiche.

J'ai donc pensé qu'il s'agissait d'un probléme avec la font indiqué "zapfino", je débarque sur mac et je ne suis pas sur qu'elle soit installée par défaut.
Donc j'ai essayé avec une autre que j'avais dans le livre des polices, mais ca ne change rien.

Peut etre manque t il une explication pour incorporer la font dans le projet ?

Merci pour votre aide.

#13 touladi

touladi

    iPuP membre

  • Members
  • 6 Messages :

Posté 25 avril 2013 - 18:00

...






0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)