{"id":413,"date":"2013-10-19T13:49:34","date_gmt":"2013-10-19T17:49:34","guid":{"rendered":"http:\/\/tim.cstj.qc.ca\/cours\/xcode\/wp\/?page_id=413"},"modified":"2013-10-19T13:49:34","modified_gmt":"2013-10-19T17:49:34","slug":"les-copiercoller","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/xcode\/les-copiercoller\/","title":{"rendered":"Les copier\/coller &#8211; Objective-C"},"content":{"rendered":"<h3>Contenu<\/h3>\n<ol>\n<li><a href=\"#a1\">Afficher une trace<\/a><\/li>\n<li><a href=\"#a2\">Cha\u00eene persistante\u00a0avec format<\/a><\/li>\n<li><a href=\"#a3\">Cha\u00eene non persistante\u00a0avec format<\/a><\/li>\n<li><a href=\"#a4\">Cha\u00eene &#8211; concat\u00e9nation<\/a><\/li>\n<li><a href=\"#a5\">Cr\u00e9er un tableau \u00e0 partir d&rsquo;un fichier de propri\u00e9t\u00e9s<\/a><\/li>\n<li><a href=\"#a6\">Charger une image par programmation<\/a><\/li>\n<li><a href=\"#a7\">Capturer l&rsquo;\u00e9cran<\/a><\/li>\n<li><a href=\"#a8\">Poster sur Twitter<\/a><\/li>\n<li><a href=\"#a9\">Poster sur facebook<\/a><\/li>\n<li><a href=\"#a10\">Revenir \u00e0 la sc\u00e8ne pr\u00e9c\u00e9dente<\/a><\/li>\n<li><a href=\"#a11\">UITableView &#8211; d\u00e9l\u00e9gation<\/a><\/li>\n<li><a href=\"#a12\">Afficher une UITableViewCell perso<\/a><\/li>\n<li><a href=\"#a13\">UICollectionView &#8211; d\u00e9l\u00e9gation<\/a><\/li>\n<li><a href=\"#a14\">Cr\u00e9er une tableau d&rsquo;images \u00e0 partir de fichiers000(i).png<\/a><\/li>\n<li><a href=\"#a15\">Cr\u00e9er une image \u00e0 partir d&rsquo;une URL<\/a><\/li>\n<li><a href=\"#a16\">Cr\u00e9er une tableau \u00e0 partir d&rsquo;un r\u00e9sultat JSON via le web<\/a><\/li>\n<li><a href=\"#a17\">Pr\u00e9parer un segue<\/a><\/li>\n<li><a href=\"#a18\">Ex\u00e9cuter une m\u00e9thode apr\u00e8s un d\u00e9lai<\/a><\/li>\n<li><a href=\"#a19\">Programmer un NSTimer<\/a><\/li>\n<li><a href=\"#a20\">Afficher un Alert<\/a><\/li>\n<li><a href=\"#a21\">Charger un NIB par programmation<\/a><\/li>\n<li><a href=\"#a22\">Animer une propri\u00e9t\u00e9<\/a><\/li>\n<li><a href=\"#a23\">D\u00e9tecter une collision entre deux UIView<\/a><\/li>\n<li><a href=\"#a24\">Ins\u00e9rer une subView \u00e0 la position parentViewCount &#8211; n<\/a><\/li>\n<li><a href=\"#a25\">Obtenir l&rsquo;\u00e9l\u00e9ment d&rsquo;une collection<\/a><\/li>\n<li><a href=\"#a26\">NSArray &#8211; cod\u00e9 au dur<\/a><\/li>\n<li><a href=\"#a27\">NSArray &#8211; \u00e9num\u00e9ration rapide<\/a><\/li>\n<li><a href=\"#a28\">NSDictionnary &#8211; cod\u00e9 au dur<\/a><\/li>\n<li><a href=\"#a29\">NSDictionnary &#8211; \u00e9num\u00e9ration rapide<\/a><\/li>\n<li><a href=\"#a30\">Afficher heure actuelle avec format<\/a><\/li>\n<li><a href=\"#a31\">Cr\u00e9er un UIButton + event par programmation<\/a><\/li>\n<li>\u00a0Prendre une pause<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>&nbsp;<br \/>\n<a name=\"a1\"><\/a><br \/>\n<a name=\"a1\"><\/a><a name=\"a1\"><\/a><\/p>\n<h3>Afficher une trace<\/h3>\n<p><a name=\"a1\"><\/a><a name=\"a1\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">NSLog(@\"&lt;#chaine#&gt;\");\nNSLog(@\"&lt;#chaine#&gt; = %@\", &lt;#chaine#&gt;);\nNSLog(@\"&lt;#entier#&gt; = %d\", &lt;#entier#&gt;);\nNSLog(@\"&lt;#entier4car#&gt; = %04d\", &lt;#entier#&gt;);\nNSLog(@\"&lt;#r\u00e9el#&gt; = %f\", &lt;#r\u00e9el#&gt;);\nNSLog(@\"&lt;#r\u00e9el2.2#&gt; = %2.2f\", &lt;#r\u00e9el#&gt;);<\/pre>\n<p><a name=\"a1\"><\/a><br \/>\n<a name=\"a2\"><\/a><br \/>\n<a name=\"a2\"><\/a><a name=\"a2\"><\/a><\/p>\n<h3>Cha\u00eene persistante\u00a0avec format<\/h3>\n<p><a name=\"a2\"><\/a><a name=\"a2\"><\/a><\/p>\n<pre class=\"theme:timwrap toolbar:1 wrap:true lang:default decode:true\">NSString * &lt;#uneChaine#&gt; = [[NSString alloc] initWithFormat:@\"&lt;#Je suis %@, j'ai %d an(s) et mon poids est de %2.2f kg#&gt;\", &lt;#uneChaine#&gt;, &lt;#unEntier#&gt;, &lt;#unR\u00e9el#&gt;];<\/pre>\n<p><a name=\"a2\"><\/a><br \/>\n<a name=\"a3\"><\/a><br \/>\n<a name=\"a3\"><\/a><a name=\"a3\"><\/a><\/p>\n<h3>Cha\u00eene non persistante\u00a0avec format<\/h3>\n<p><a name=\"a3\"><\/a><a name=\"a3\"><\/a><\/p>\n<pre class=\"toolbar:1 wrap:true lang:default decode:true\">NSString * &lt;#uneChaine#&gt; = [NSString stringWithFormat:@\"&lt;#Je suis %@, j'ai %d an(s) et mon poids est de %2.2f kg#&gt;\", &lt;#uneChaine#&gt;, &lt;#unEntier#&gt;, &lt;#unR\u00e9el#&gt;];<\/pre>\n<p><a name=\"a3\"><\/a><br \/>\n<a name=\"a4\"><\/a><br \/>\n<a name=\"a4\"><\/a><a name=\"a4\"><\/a><\/p>\n<h3>Cha\u00eene &#8211; concat\u00e9nation<\/h3>\n<p><a name=\"a4\"><\/a><a name=\"a4\"><\/a><\/p>\n<pre class=\"toolbar:1 wrap:true lang:default decode:true\">NSString * &lt;#uneChaine#&gt; = [[NSString alloc]initWithFormat:@\"%@%@%@\", &lt;#chaine1#&gt;, &lt;#chaine2#&gt;, &lt;#chaine3#&gt;];<\/pre>\n<p><a name=\"a4\"><\/a><br \/>\n<a name=\"a5\"><\/a><br \/>\n<a name=\"a5\"><\/a><a name=\"a5\"><\/a><\/p>\n<h3>Cr\u00e9er un tableau avec un fichier<\/h3>\n<p><a name=\"a5\"><\/a><a name=\"a5\"><\/a><\/p>\n<pre class=\"theme:timwrap toolbar:1 lang:default decode:true\">tableauDesVideos = [[NSArray alloc]initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@\"Listes des videos\" ofType:@\"plist\"]];<\/pre>\n<p><a name=\"a5\"><\/a><br \/>\n<a name=\"a6\"><\/a><br \/>\n<a name=\"a6\"><\/a><a name=\"a6\"><\/a><\/p>\n<h3>Charger une image par programmation<\/h3>\n<p><a name=\"a6\"><\/a><a name=\"a6\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">self.imageView.image = [UIImage imageNamed:@\"fichier.png\"];<\/pre>\n<p><a name=\"a6\"><\/a><a name=\"a7\"><\/a><br \/>\n<a name=\"a7\"><\/a><a name=\"a7\"><\/a><\/p>\n<h3>Capturer l&rsquo;\u00e9cran<\/h3>\n<p><a name=\"a7\"><\/a><a name=\"a7\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">\/ Pour avoir acc\u00e8s \u00e0 .layer\n#import &lt;QuartzCore\/QuartzCore.h&gt;\n@interface ViewController () {\n  UIImage * _imageFinale; \/\/ Pour stocker une copie de la sc\u00e8ne sous forme d\u2019image\n}\n@end\n-(void) sauvegarder{\n  \/\/ Description : m\u00e9thode servant \u00e0 capturer l\u2019\u00e9cran et au besoin,\n  \/\/ en faire une sauvegarde dans l\u2019album photos.\n  \/\/ 1 - Pr\u00e9parer un contexte de dessin \u00e0 partir de la taille de la sc\u00e8ne\n  UIGraphicsBeginImageContext(self.view.bounds.size);\n  \/\/ 2 \u2013 Dessiner \u00e0 partir du claque par d\u00e9faut de la sc\u00e8ne\n  [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];\n  \/\/ 3 \u2013 Stocker le r\u00e9sultat dans notre objet local\n  _imageFinale = UIGraphicsGetImageFromCurrentImageContext();\n  \/\/ 5 \u2013 Fermer le contexte de dessin\n  UIGraphicsEndImageContext();\n  \/\/ 6 \u2013 Facultatif - Stocker une copie de la capture d\u2019\u00e9cran dans l\u2019album photos\n  UIImageWriteToSavedPhotosAlbum(_imageFinale, nil, nil, nil );\n}<\/pre>\n<p><a name=\"a7\"><\/a><br \/>\n<a name=\"a8\"><\/a><br \/>\n<a name=\"a8\"><\/a><a name=\"a8\"><\/a><\/p>\n<h3>Poster sur Twitter<\/h3>\n<p><a name=\"a8\"><\/a><a name=\"a8\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">#import &lt;Social\/Social.h&gt;\n- (IBAction)posterSurTwitter:(id)sender {\n \/\/ Les \u00e9tapes pour utiliser \u2018twitter\u2019\n \/\/ 1 - Tester si le service et les informations de connexion sont dispo\n if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])\n {\n \/\/ 2 - Cr\u00e9er un feuille pour le 'post'\n SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];\n \/\/ 3 - Composer le message\n [tweetSheet setInitialText:@\"TIM.Magazine - via labo app iOS, Production sur support 2013. #CSTJ\"];\n \/\/ 4 - Ajouter une image - facultatif\n \/\/ [tweetSheet addImage:_imageFinale];\n \/\/ 5 - Ajouter un lien - facultatif\n \/\/ [tweetSheet addURL:[NSURL URLWithString:@\"http:\/\/tim.cstj.qc.ca\"]];\n \/\/ 6 - Pr\u00e9senter la fen\u00eatre de confirmation \u00e0 l'utilisateur\n [self presentViewController: tweetSheet animated: YES completion: nil];\n } \/\/ if twitter disponible ...\n}<\/pre>\n<p><a name=\"a8\"><\/a><br \/>\n<a name=\"a9\"><\/a><br \/>\n<a name=\"a9\"><\/a><a name=\"a9\"><\/a><\/p>\n<h3>Poster sur facebook<\/h3>\n<p><a name=\"a9\"><\/a><a name=\"a9\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {\n SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];\n [controller setInitialText:@\"Le texte \u00e0 poster \u2026\"];\n \/\/ [controller addURL:[NSURL URLWithString:@\"http:\/\/tim.cstj.qc.ca\"]]; \/\/ au besoin\n \/\/ [controller addImage: uneImage]; \/\/ au besoin\n [self presentViewController:controller animated:YES completion:Nil];\n }<\/pre>\n<p><a name=\"a9\"><\/a><br \/>\n<a name=\"a10\"><\/a><br \/>\n<a name=\"a10\"><\/a><a name=\"a10\"><\/a><\/p>\n<h3>Revenir \u00e0 la sc\u00e8ne pr\u00e9c\u00e9dente<\/h3>\n<p><a name=\"a10\"><\/a><a name=\"a10\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">[self dismissViewControllerAnimated:YES completion:nil];<\/pre>\n<p><a name=\"a10\"><\/a><br \/>\n<a name=\"a11\"><\/a><br \/>\n<a name=\"a11\"><\/a><a name=\"a11\"><\/a><\/p>\n<h3>UITableView &#8211; d\u00e9l\u00e9gation<\/h3>\n<p><a name=\"a11\"><\/a><a name=\"a11\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;\n\/\/ Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:\n\/\/ Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;<\/pre>\n<p><a name=\"a11\"><\/a><br \/>\n<a name=\"a12\"><\/a><br \/>\n<a name=\"a12\"><\/a><a name=\"a12\"><\/a><\/p>\n<h3>Afficher une UITableViewCell perso<\/h3>\n<p><a name=\"a12\"><\/a><a name=\"a12\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">#import \"CelluleVideo.h\"\n\/\/ tableView: cellForRowAtIndexPath\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{\n    CelluleVideo * celluleCourante = [tableView dequeueReusableCellWithIdentifier:@\"modeleCellule\" forIndexPath:indexPath];\n    celluleCourante.videoTitre.text = tableauDesVideos[indexPath.row][@\"titre\"];\n    celluleCourante.videoImage.image = [UIImage imageNamed:tableauDesVideos[indexPath.row][@\"pochette\"]];\n    celluleCourante.videoAnnee.text = tableauDesVideos[indexPath.row][@\"annee\"];\n    celluleCourante.videoCote.image = [UIImage imageNamed:[NSString stringWithFormat:@\"%@-star-rating.png\", tableauDesVideos[indexPath.row][@\"cote\"]]];\n    return celluleCourante;\n}<\/pre>\n<p><a name=\"a12\"><\/a><br \/>\n<a name=\"a13\"><\/a><br \/>\n<a name=\"a13\"><\/a><a name=\"a13\"><\/a><\/p>\n<h3>UICollectionView &#8211; d\u00e9l\u00e9gation<\/h3>\n<p><a name=\"a13\"><\/a><a name=\"a13\"><\/a><\/p>\n<pre class=\"toolbar:1 lang:default decode:true\">- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section;\n\/\/ The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:\n- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;\n- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath;<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a14\"><\/a> Cr\u00e9er une tableau d&rsquo;images \u00e0 partir de fichiers000(i).png<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">NSMutableArray * images = [NSMutableArray new];\nfor (int i=0; i&lt;=NB_IMAGE;i++) [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@\"explosion-%03d.png\",i]]];\n\/\/ Au besoin, image auto anim\u00e9e\n\/\/ self.image = [UIImage animatedImageNamed:nomFichier duration:10];\nself.animationImages = images;\nself.animationRepeatCount = 1;\nself.animationDuration = DUREE_ANIMATION;<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a15\"><\/a> Cr\u00e9er une image \u00e0 partir d&rsquo;une URL<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">celluleCourante.filmImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlImage]]];<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a16\"><\/a> Cr\u00e9er une tableau \u00e0 partir d&rsquo;un r\u00e9sultat JSON via le web<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">\/\/ ========================================================================\n- (NSDictionary *)convertirJSON:(NSString *) adresseURL\n\/\/ ========================================================================\n{\n    NSDictionary * structureJSONConvertie;\n    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:adresseURL]];\n    NSError *error;\n    structureJSONConvertie = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&amp;error];\n    \/\/ Attention, il faudrait tester 'error'\n    return structureJSONConvertie;\n}   \/\/ *** fin - convertirJSON<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a17\"><\/a> Pr\u00e9parer un segue<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">\/\/ Lanc\u00e9e automatiquement avant une transition 'segue'\n-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{\n    \/\/ Pointer sur la sc\u00e8ne de destination\n    VCDetailVideoCourante * vcDetail = [segue destinationViewController];\n    \/\/ sender -&gt; pointe sur la cellule s\u00e9lectionn\u00e9e\n    int selectionCourante = [[self.TViewVideos indexPathForCell:sender] row];\n    \/\/ Envoyer les informations de la s\u00e9lection courante\n    vcDetail.videoInfo = tableauDesVideos[selectionCourante];\n}<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a18\"><\/a> Ex\u00e9cuter une m\u00e9thode apr\u00e8s un d\u00e9lai<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">    [self performSelector:@selector(transitionVersListeVideos) withObject:self afterDelay:0.5];<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a19\"><\/a> Programmer un NSTimer<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">\/\/  ViewController.m\n#import \"ViewController.h\"\n#define INTERVALLE_TIMER 1  \/\/ en secondes\n@interface ViewController () {\n    NSTimer * jeSuisUnTimer;\n    int     i;\n}\n@end\n@implementation ViewController\n- (void)viewDidLoad\n{\n    [super viewDidLoad];\n    i = 0;\n    jeSuisUnTimer = [NSTimer scheduledTimerWithTimeInterval:\n        INTERVALLE_TIMER                        \/\/ en secondes  ( 0.x est valide)\n        target:self                             \/\/ L'objet qui va recevoir le message\n        selector:@selector(uneMethode)          \/\/ M\u00e9thode \u00e0 ex\u00e9cuter \u00e0 'INTERVALLE_TIMER'\n        userInfo:nil                            \/\/ Un objet qui sert \u00e0 passer des donn\u00e9es\n        repeats:YES                             \/\/ YES = toujours, NO = 1 fois\n        ];\n}\n- (void) uneMethode{\n    NSLog(@\"Je suis dans -&gt; uneMethode %i fois\", ++i);\n    if ( i == 10){\n        [jeSuisUnTimer invalidate];  \/\/Arr\u00eater le timer\n    }\n}\n@end<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a20\"><\/a> Afficher un Alert<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">@interface ViewController () &lt;UIAlertViewDelegate&gt;\n{\n   _unAlert = [[UIAlertView alloc]\n                initWithTitle:@\"Attention\"\n                message:@\"Ceci est une 'Alerte bleue'!\"\n                delegate:self\n                cancelButtonTitle:@\"Non\"\n                otherButtonTitles:@\"Oui\", @\"Peut-\u00eatre\", nil\n                ];\n    [_unAlert show];\n    NSLog(@\"[_unAlert show] lance une op\u00e9ration non bloquante\");\n}\n\/\/ M\u00e9thode d\u00e9l\u00e9gation de alertView\n- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex\n{\n    NSLog(@\"Bouton: %i, s\u00e9lectionn\u00e9.\", buttonIndex);\n}<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a21\"><\/a> Charger un NIB par programmation<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">uneScene = [[[NSBundle mainBundle] loadNibNamed:@\"nomFichierXIB\" owner:self options:nil] objectAtIndex:0];<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a22\"><\/a> Animer une propri\u00e9t\u00e9<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">\/\/ Animer la propri\u00e9t\u00e9 alpha d'un UIView\n[UIView     animateWithDuration: 2.5\n                              delay: 0.0\n                            options: UIViewAnimationOptionCurveEaseIn\n                         animations: ^{\n                             NSLog(@\"D\u00e9marrage de l'animation...\");\n                             self.UIUneLumiere.alpha = !self.UIUneLumiere.alpha;\n                         }\n                         completion:^(BOOL finished) {\n                             NSLog(@\"Animation termin\u00e9e!\");\n                         }\n     ];<\/pre>\n<p>&nbsp;<\/p>\n<h3><a name=\"a23\"><\/a> D\u00e9tecter une collision entre deux UIView<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">CGRect personnage = [[lePersonnage.layer presentationLayer]frame];\nCGRect sousZone = CGRectInset(personnage, personnage.size.width\/2,personnage.size.height\/2 );\nif (CGRectIntersectsRect(sousZone, unObjet.frame))\n{\n  NSLog(@\"Il y a eu collision entre le personnage et %@\", unObjet.class);\n}<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a24\"><\/a><\/p>\n<h3>Ins\u00e9rer une subView \u00e0 la position parentViewCount &#8211; n<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">[self.view insertSubview:uneView atIndex:[self.view.subviews count]-1];<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a25\"><\/a><\/p>\n<h3>Obtenir l&rsquo;\u00e9l\u00e9ment d&rsquo;une collection<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">info = unDictionnaire[@\"tableauElements\"][indiceElement][@\"nomChamp\"];<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a26\"><\/a><\/p>\n<h3>NSArray &#8211; cr\u00e9er au dur<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">NSArray  * unTableau1 = [NSArray arrayWithObjects:@\"Je\",@\"suis\",@\"fou\", @\"de TIM\",nil];\n\/\/ ou bien\nNSArray  * unTableau2 = @[@\"Je\",@\"suis\",@\"fou\", @\"de TIM\"];<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a27\"><\/a><\/p>\n<h3>NSArray &#8211; \u00e9num\u00e9ration rapide<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">for(NSString * uneChaine in unTableau) {\n   chaineResultat = [NSString stringWithFormat:@\"%@ %@\",chaineResultat,uneChaine];\n}<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a28\"><\/a><\/p>\n<h3>NSDictionnary &#8211; cr\u00e9er au dur<\/h3>\n<pre class=\"lang:default decode:true\">NSDictionary * unDictionnaire = [[NSDictionary alloc]\n                                     initWithObjectsAndKeys:@\"Montr\u00e9al\", @\"mtl\",\n                                     @\"Qu\u00e9bec\", @\"qc\",\n                                     @\"Saint-J\u00e9r\u00f4me\", @\"stj\"\n                                     ,nil];\n\/\/ Ou bien\nNSDictionary * unDictionnaire2 = @{@\"mtl\": @\"Montr\u00e9al\", @\"qc\": @\"Qu\u00e9bec\", @\"stj\": @\"Saint-J\u00e9r\u00f4me\" };<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a29\"><\/a><\/p>\n<h3>NSDictionnary\u00a0&#8211; \u00e9num\u00e9ration rapide<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">\/\/Pour parcourir les \u00e9l\u00e9ments d'un dictionnaire\nfor(NSString * key in unDictionnaire){\n   NSLog(@\"cl\u00e9: %@, contenu: %@\", key, unDictionnaire[key]);\n}<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a30\"><\/a><\/p>\n<h3>Afficher heure actuelle avec format<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">NSDate * presentement = [NSDate date];\nNSDateFormatter *unFormateurDeDate = [[NSDateFormatter alloc] init];\n[unFormateurDeDate setDateFormat:@\"'Nous sommes 'EEEE' et il est 'hh:mm:ss\"];\nNSString *heuresMinutesSecondes = [unFormateurDeDate stringFromDate:presentement];\nself.nousSommes.text = heuresMinutesSecondes;<\/pre>\n<p>&nbsp;<br \/>\n<a name=\"a31\"><\/a><\/p>\n<h3>Cr\u00e9er un UIButton + event par programmation<\/h3>\n<pre class=\"toolbar:1 lang:default decode:true\">- (void)viewDidLoad\n{\n    [super viewDidLoad];\n    \/\/  Cr\u00e9ation d'un bouton par programmation\n    UIButton * unBouton;\n    unBouton = [UIButton buttonWithType:UIButtonTypeRoundedRect];\n    unBouton.frame = CGRectMake(1, 1, 100, 30);\n    [unBouton setTitle:@\"Continuer\" forState:UIControlStateNormal];\n    [unBouton setAlpha:0.9];\n    [unBouton addTarget:self action:@selector(boutonAppuye) forControlEvents:UIControlEventTouchUpInside];\n    [self.view addSubview:unBouton];\n}\n- (void)boutonAppuye {\n    UIAlertView * myAlert;\n    myAlert = [[UIAlertView alloc]\n               initWithTitle:@\"Bouton appuy\u00e9!\"\n               message:@\"Continuer?\"\n               delegate:self\n               cancelButtonTitle:@\"Non\"\n               otherButtonTitles:@\"Oui\", nil\n               ];\n    [myAlert show];\n}<\/pre>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contenu Afficher une trace Cha\u00eene persistante\u00a0avec format Cha\u00eene non persistante\u00a0avec format Cha\u00eene &#8211; concat\u00e9nation Cr\u00e9er un tableau \u00e0 partir d&rsquo;un fichier de propri\u00e9t\u00e9s Charger une image par programmation Capturer l&rsquo;\u00e9cran Poster sur Twitter Poster sur facebook Revenir \u00e0 la sc\u00e8ne pr\u00e9c\u00e9dente UITableView &#8211; d\u00e9l\u00e9gation Afficher une UITableViewCell perso UICollectionView &#8211; d\u00e9l\u00e9gation Cr\u00e9er une tableau d&rsquo;images [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-413","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/comments?post=413"}],"version-history":[{"count":0,"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/pages\/413\/revisions"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/xcode\/wp-json\/wp\/v2\/media?parent=413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}