Vous avez vu? Simple. Pas besoin de chercher midi à 14 heures.

Ce qui peut ne pas marcher

Le screencast ne donne peut être pas le bon résultat pour vous. A cela quelques raisons fréquentes que je vais rassembler ici. Première chose il faut bien sauvegarder vos fichiers de code avant de regarder dans Inerface Builder. Quand vous le faites, XCode prévient Interface Builder dans votre dos qu’il doit relire la définition de l’objet, le fichier .h.

Deuxième chose qui peut clocher : votre méthode doit accepter certains objets en paramètres et renvoyer void ou IBAction. Avec IBAction, vous êtes certains que Interface Builder sait que l’on a définit cette méthode pour qu’il puisse la manger, s’en servir. De son côté l’objet que vous allez actionner va toujours s’envoyer lui même comme paramètre de la méthode. Comme les objets peuvent être de nature de différente, on a l’habitude d’accepter id comme paramètre (ce qui désigne un objet).

Tout ça c’est ce qui peut déconner dans le fichier .h . Maintenant vous pouvez faire des erreurs dans le fichier .m Par exemple vous pouvez oublier complètement d’implémenter la méthode. Le compilateur vous préviendra avec un warning, mais ce n’est pas une cause d’échec de la compilation. Si vous vous trompez de syntaxe, ou que vous changez le type de retour de la méthode ou les objets pris en entrée, cela a le même (désastreux) effet. A l’utilisation, ce type d’erreur conduit à un crash suite à une erreur de type obcexceptionthrow .

Si vous ne voyez pas votre méthode apparaître quand vous essayez de connecter, cherchez du côté de la signature de la méthode, dans le ficheir .h : bons paramètres, bon retour.

Enfin, vous pouvez oublier de faire la connexion. Alors évidemment, le bouton ne fait rien.

Allez, niveau supérieur

Le niveau supérieur, c’est dans l’autre sens : connecter des variables du code avec l’interface. On va faire simple, on va commencer juste avec le UILabel du début. Pour expliquer le concept, disons cela :

Quand l’interface se réveille, elle sait quel type d’objet contrôleur doit être désarchivé avec elle. En effectuant les connexions, on lie les variables de l’interface qui se réveille avec les variables de l’objet contrôleur correspondant.

Il faut donc avoir des variables dans le code, dans le header, pour les lier aux objets présents dans l’interface. Notre code ressemble alors à cela:

#import <UIKit/UIKit.h>
@interface SalutViewController : UIViewController {
IBOutlet UILabel *salutLabel;
}

@end

On sauvegarde et on effectue la connexion entre le code et l’interface pour que le code sache quel est l’objet correspondant, et que l’interface sache avec quelle variable du contrôleur lier l’objet qui revient à la vie.

Et hop, screencast :

Nous avons rajouté la variable salutLabel qui est un objet de type UILabel au code. Puis nous avons connecté la variable au bon objet dans l’interface.

Nous allons maintenant simplement changer le contenu du texte de salutLabel. Pour ce faire on va utiliser la méthode liée au bouton tout à l’heure. On va le faire pas trop sophistiqué pour le moment. On va remplacer la méthode buttonPressed en rajoutant un changement de la propriété text .

- (IBAction) buttonPressed:(id) sender{ NSLog(@"On a appuyé sur le bouton"); salutLabel.text = @"salut les aminches"; }

Voilà! On a donc fait un truc très simple. Même si le concept vous parait encore un peu étranger, ne vous posez pas plus de questions que cela pour le moment. A l’usage, un jour, si c’est encore un peu obscur, votre cerveau va s’éclaircir et verra la lumière.

Téléchargez le projet à cette étape

Tags: , , , , , ,
Comments Off

Adwords plays a dangerous game with trademarks

Posted on 22/03/2009, 8:59 am, by admin, under General, iPhone Dev.

I just came accorss something which I need to comment on. I tried creating an adword campaign for my gps tracker software that works exclusively on the iPhone last week. Google didn’t allow me because ‘iPhone is a trademark’. OK Let’s try i-Phone, which is not : same issue. Let’s try iPh0ne (with a zero) : same answer.

I did ask for a derogation in the first place, commenting that I was a certified iPhone developer, that my application was only for the iphone , that I had a contract with Apple : still no answer after one week, and no derogation accepted.

Boo.

So I tried to create a campaign using HTC Dream : is that a trademark? Ja mein Herr, es ist. Dream ok. but HTC, definitely. I also noticed that many of the recomendations for keywords used the word Garmin , which in the Oxford Concise Dicionary I have is not a noun. Looks like a trademark to me.

Well, guess what? makins ads fo Garmin or HTC Dream is OK!

Is there a conflict betweeen Google Adwords and Google, the Android provider? I don’t know but the rules are bent just a little too much to me.

Tags: , , ,
1 Comment »

NikePlus is a closed platform

Posted on 20/03/2009, 9:32 pm, by admin, under General, Running/Hiking.

I’ve had a bad experience today. With the latest versions of iPod Software and Nike Plus, all your runs are certificate-signed. So you cannot change the data inside the XML or create a new data file if you’ve missed a run.

That sucks!

And if you’re using something else to track your runs today, you cannot upload anymore to Nike+.com, event if you had an account in the first place.

Sucks too!

This is definitely a case of not being able to use your data valid through the ages, despite the promise that was made. I am really disappointed.

And I think that it is not a good move on Nike’s part. You should better be able to upload many types of data on their web server instead of just the Nike+ data. Nowadays, you can have an iPhone, or a Garmin, or a Polar, or a Suunto. Where is all this data going? I don’t want it on Nike Plus anymore.

I’ll use another web site, that’s all, and they’ll never see my ipod data again.

Tags: , , ,
Comments Off