Xcode et/ou Interface Builder ?

Giga_BossGiga_Boss Membre
Salut,

toujours dans mes tutos, je remarque qu'il est possible de modifier l'interface via Xcode et InterfaceBuilder, par contre quand je modifie sur Xcode, je ne le vois pas dans IB et inversement.

Sur lequel vaut-il meut travailler pour l'aspect graphique ?

N'existe-il pas un moyen de coder sur Xcode et retoucher sur IB ?

Je précise, mon niveau est encore à  l'apprentissage de base.

Merci beaucoup ! :)

Réponses

  • tabliertablier Membre
    01:55 modifié #2
    En version simple:
    Sous Xcode on aligne les objets/lignes de code.
    L'interface graphique se fait sous Interface Builder (dont le nom indique bien la fonction).
    La liaison entre les deux se fait au moyen des IBActions et IBOulets.

    Grosso-modo, sous IB tu définis l'aspect de l'interface graphique à  l'ouverture de l'application. Après tu peux toujours changer l'aspect par programmation.

    Dans des cas particuliers, il est possible de tout faire en ligne de code (là , il faut un certain courage!!)
    Pour la suite, je laisse les programmeurs iPad/iphone te répondre.
  • CoharsCohars Membre
    01:55 modifié #3
    Je suis à  peu prêt au même niveau ;) .

    Personnellement, je préfère tout coder, je trouve IB imprécis, peu pratique, enfin après c'est aussi parce que je ne m'en sert pas très bien. Quelqu'un qui à  l'habitude de s'en servir me contredira.
    Au moins, sous xCode, tu place au pixel prêt.

    Pour ce qui est de coder sur Xcode et retoucher sur IB, ce n'est pas possible. Avec IB, tout se place dans un .xib, alorq que xCode compile le code. Tu ne peux pas modifier un .xib avec du code, ou créer du code avec IB  :) . (je ne suis pas tout à  fait sur de ça).
  • CéroceCéroce Membre, Modérateur
    01:55 modifié #4
    Les objets qui sont contenus dans un XIB sont instanciés (créés) lorsque qu'il est chargé.
    C'est à  dire que tout ce qui s'y trouve est recréé en mémoire et peut être modifié. Les outlets permettent justement d'accéder aux objets instanciés pour pouvoir les modifier.

    Cela signifie aussi que si on instancie les objets par le code, on ne peut pas les intégrer au XIB.

    La question de savoir s'il vaut mieux travailler sous IB ou Xcode fait débat. En général, si on utilise des vues complexes, utiliser IB fait gagner du temps pour placer les objets.
    Par exemple, si on utilise une UITableView, il n'est pas très intéressant de la créer par IB, parce que son contenu est de tout façon renseigné par le code (data source de la tableView). Par contre, il peut être judicieux d'utiliser IB pour créer la vue qui sert de modèle aux cellules de la tableView: en effet, si les cellules sont complexes, le placement des éléments est plus simple à  la souris qu'en tapant les coordonnées dans le code, et aussi plus évolutif.
  • CéroceCéroce Membre, Modérateur
    01:55 modifié #5
    Par ailleurs, la réponse de Tablier est tout à  fait valable sur Mac, où d'habitude, on fait toute l'IHM sous IB.

    Je pense que la différence s'explique par la petite taille de l'écran de l'iPhone. À vrai dire, on n'a pas trop le choix de l'emplacement des éléments, et puis les trois-quarts des écrans sont constitués de tableViews. Assurément, les choses sont différentes sur l'iPad, et utiliser IB recouvre tout son intérêt.
  • laudemalaudema Membre
    01:55 modifié #6
    La force d'IB c'est aussi son intégration avec les "Human Interface Guidelines" (qui sont d'ailleurs disponibles dans le menu aide pour n'importe quel contrôle sélectionné dans IB). Sûr que pour l'iPhone ça pose moins de problème la cohérence avec le reste du Mac mais le placement bien proportionné des contrôles dans la fenêtre devrait rester une préoccupation et pour ça IB est conçu dans cette optique depuis son origine.
    Pour ce qui est de placer au pixel près il y a des champs prévus pour ça dans le 3 ème onglet de la fenêtre des propriétés. On peut aussi voir les coordonnées absolues ou relatives des objets si on appuie sur la touche option +/- majuscule ou bouger d'un pixel à  la fois en utilisant les flèches (5 pixels avec majuscule enfoncée).
    http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/IB_UserGuide/Layout/Layout.html#//apple_ref/doc/uid/TP40005344-CH19-SW23
  • Giga_BossGiga_Boss Membre
    01:55 modifié #7
    Bonsoir,

    merci à  vous pour vos avis précieux, je pense alors que avec le temps je me ferais ma propre idée selon mon utilisation mais au moins je sais que par le code on peut très bien s'en sortir aussi surtout pour démarrer avec de petites applications simples.

    J'y reviendrais donc au moment où je voudrais passer un nouveau cap  :P

    Merci encore !
  • groumpfgroumpf Membre
    novembre 2010 modifié #8
    Moi j'ai un problème avec IB c'est de faire des vues qui dépassent la hauteur/largeur de l'écran, le genre de vue qui est mis dans une scrollView. A cause de la barre d'application on ne peut pas remonter la fenêtre de la vue plus haut. J'ai aussi essayé avec Spaces mais ca ne marche pas.
    C'est quand même une limitation assez incroyable je trouve.
Connectez-vous ou Inscrivez-vous pour répondre.