Interface builder et @Iboutlet

JE729JE729 Membre
juin 2014 modifié dans Objective-C, Swift, C, C++ #1

Bonjour,


 


Je suis en train de faire joue joue avec Swift, Xcode 6 et OSX 10.10.


Je n'arrive pas à  relié les IBOutlet entre deux objets comme si les types ne correspondaient pas.


 


J'ai joint un sample, j'aimerais savoir si c'est un bug général ou chez moi de Xcode ou un problème syntaxique.



// La syntaxe est celle-ci
class AppDelegate: NSObject, NSApplicationDelegate {

@IBOutlet var window: NSWindow
@IBOutlet var instance1: Instance1
@IBOutlet var instance2: Instance2

func applicationDidFinishLaunching(aNotification: NSNotification?) {
// Insert code here to initialize your application
}

func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
}

class Instance1: NSObject {
@IBOutlet var delegate1: AppDelegate?
}

class Instance2: Instance1 {
@IBOutlet var delegate2: AppDelegate?
}

Réponses

  • HerveHerve Membre

    Je ne travaille pas avec Swift, mais je suis étonné de voir des IBOutlet en "var". J'ai cru comprendre qu'une constante est indiquée "let".


    Ne faudrait-il pas faire "let IBOutlet"???


  • JE729JE729 Membre

    Je viens de vérifier mais non il faut bien utiliser var

    Bonne idée comme même ;)


  • JE729JE729 Membre

    Je viens de tester avec OSX 10.9 et Xcode 6 et le bug est toujours la


    C'est donc pas liée à  10.10


     


    Soit c'est Xcode soit la syntaxe


  • AliGatorAliGator Membre, Modérateur
    Tu vois bien les outlets, mais c'est la connexion qui refuse de se faire, c'est ça ? (j'ai pas téléchargé ton projet je suis sur mon iPad là )
  • samirsamir Membre

    et le ctr + drag marche ?


  • JE729JE729 Membre
    juin 2014 modifié #7

    Oui exactement je les vois mais pas de connexion quand je ctr+drag


     


    Moi qui voulait faire une petite appli avec Swift pour me faire la main ...


  • AliGatorAliGator Membre, Modérateur
    Je viens de regarder vite fait ton projet existant, c'est bizarre en effet, j'arrive pas à  connecter les outlets aux objets... sauf une seule connexion que j'ai réussi à  faire, c'est l'outlet AppDelegate.instance1 que j'ai réussi à  relier à ... l'objet Instance2! Oui oui, Instance2 et pas Instance1 (et j'ai vérifier dans le Class Inspector, l'objet que l'on voit nommé "Instance2" dans IB est bien de la classe "Instance2").

    Le fait que Instance2 soit une sous-classe de "Instance1" joue peut-être sur le bug, mais ça reste, dans tous les cas, pas logique comme comportement. Soit y'a un bug qqpart (c'est pas exclu, c'est une beta), soit une incompréhension de notre part sur la syntaxe du langage... A creuser.
  • AliGatorAliGator Membre, Modérateur
    Enfin non l'outlet window aussi j'arrive à  le connecter hein.
    Et si je rajoutes un "@IBOutlet var mainView: NSView" à  ton AppDelegate, j'arrive aussi à  le lier à  une NSView dans IB sans souci.

    Alors que dès que c'est un "Object" dans IB que tu as positionné en drag & droppant le petit cube bleu de la bibliothèque d'objets IB, il a l'air de s'y perdre. En tout cas j'y vois assurément un bug pour ce cas particulier.
  • par cotre ça marche avec ctr + drag via l'éditeur assistant ( génération des Outlets directement à  travers interface builder).


Connectez-vous ou Inscrivez-vous pour répondre.