PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Comment créer une procédure en code Objective C ?
  • Remarques importantes
  • Utiliser l'UIView d'une fenêtre
  • Comment appeler des classes Objective C ?
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
Il est possible de saisir du code Objective C dans les applications iPhone/iPad générées avec WINDEV Mobile.
Vous pouvez ainsi créer des procédures globales entièrement en code Objective C.
Comment créer une procédure en code Objective C ?
Pour saisir le code d'une procédure globale en code Objective C :
  1. Créez une nouvelle procédure globale (par exemple option "Nouvelle procédure globale" du menu contextuel des collections de procédures dans le volet "Explorateur de projet"). Indiquez le nom de cette procédure.
    Attention : le nom de la procédure ne doit pas contenir de caractères accentués.
  2. Sous l'éditeur de code, cliquez sur les lettres "WL" précédant le libellé de la procédure globale. Le bandeau devient bleu clair et les caractères "ObjC" apparaissent devant le nom de la procédure. Le code existant est mis en commentaires.
Par exemple :
devient :
Remarques :
  • Pour revenir en code WLangage, il suffit de cliquer sur "ObjC" dans le bandeau de la procédure.
  • Le nom de la procédure Objective C ne doit pas contenir d'accents. Dans le cas contraire, les accents sont supprimés lors du passage au code Objective C.

Remarques importantes

  • Le passage de paramètres à une procédure Objective C est réalisé automatiquement par valeur.
  • Si le paramètre est un pointeur, le passage de paramètres est réalisé par valeur, mais il est possible d'agir sur le contenu du pointeur dans la procédure.
  • Les paramètres des procédures écrites en code Objective C doivent obligatoirement être typées avec un type primitif (entier, réel, chaîne, ...). Les types gérés sont :
    • char
    • wchar_t
    • float
    • double
    • int
    • long
    • short
    • void
    • bool
    • BOOL
  • Evitez les commentaires de type "/*". Les commentaires WLangage ("//") sont gérés.

Utiliser l'UIView d'une fenêtre

Il n'est pas possible d'utiliser directement l'UIView d'une fenêtre. Cependant, la fonction Handle permet d'obtenir un pointeur sur l'UIView actuel.
Voici un exemple de code Objective C permettant de lire une vidéo :
#import <MediaPlayer/MediaPlayer.h>

void LireVideo(void* currentView, NSString* VideoURL)
{
   
MPMoviePlayerController *moviePlayer;
NSURL *movieURL;
UIView *tmpView = (UIView*)currentView;
   
movieURL = [NSURL URLWithString:VideoURL];
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
[tmpView addSubview:moviePlayer.view];
moviePlayer.fullscreen = YES;
[moviePlayer play];
}
et l'appel correspondant en WLangage :
LireVideo(Handle(MaFenêtre, HandleUIViewController), "http://mavideo.com/mavideo.mp4")
Comment appeler des classes Objective C ?
Si votre procédure en code Objective C utilise des classes Objective C :
  1. Ajoutez les imports correspondants aux classes Objective C utilisées dans le code Objective C natif saisi (grâce au mot-clé "Import"). Il est recommandé d'ajouter ces imports avant la déclaration de la méthode. Par exemple :
  2. Si les classes Objective C sont présentes dans des librairies spécifiques, intégrez ces librairies dans l'application lors de la génération de l'application iPhone/iPad, grâce à l'écran suivant de l'assistant :
Remarque : Ces librairies doivent être accessibles depuis le PC utilisé pour la génération de l'application iPhone/iPad.
Liste des exemples associés :
iOS Systeme iPhone/iPad (WINDEV Mobile) : iOS Systeme
[ + ] Cette application est un exemple montrant comment utiliser diverses fonctionnalités
Les fonctionnalités sont :
- Lecture de vidéo
- Trace dans les logs
- Potentiomètre
- Champ popup
- Sablier
...
Version minimum requise
  • Version 17
Commentaires
UIViewController et non UIView
L'exemple LireVideo passe un handle: c'est une instance de UIViewController que l'on obtient (WD Mobile 18 version 06F180036F).
Donc
id something = (id) currentView;
UIView *myView;
if ([something isKindOfClass:[UIViewController class]]) {
myView= ((UIViewController *) something).view;
} else { // A priori on devrait être dans ce cas d'après la doc
myView= (UIView*)currentView;
}
LaZi
28 fév. 2013